如何用Double向量相乘
本文关键字:向量 Double 何用 | 更新日期: 2023-09-27 18:11:16
我想让一个精灵来回移动,这里有一个等式:
SpriteTexture sprite;
Vector2 position;
Vector2 p1 = new Vector2(0, 100),
p2 = new Vector2(0, 0);
double currentTime = 0, timestep = 0.01;
...
protected override void Update(GameTime gameTime)
{
position = currentTime * p1 + (1 - currentTime) * p2;
currentTime += timestep;
if (currentTime >= 1 || currentTime <= 0)
{
timestep *= -1;
}
}
我一直得到错误:"操作符'*'不能应用于'double'类型和Microsoft.Xna.Framework.Vector2"
尝试使用Vector2.Multiply
或将double转换为float,并将Vector2
乘以currentTime
1。
position = Vector2.Multiply(p1, (float)currentTime) +
Vector2.Multiply(p2, (float)(1 - currentTime));
2。
position = (p1 * (float)currentTime) + (p2 * (float)(1 - currentTime));
Vector2支持浮点数乘法,或者您可以手动将vector的各个组成部分乘以double(您将其强制转换为float)。
例如: position = currentTime * (float)p1 + ((float)(1 - currentTime)) * p2;
或者如果你想对一个向量做单独的乘法运算
// Assuming myVector is a Vector3:
myVector.X *= (float)someDoubleValue;
myVector.Y *= (float)someDoubleValue;
myVector.Z *= (float)someDoubleValue;
尝试使用:
Vector2.Multiply Method (Vector2, Single)
API如下:
http://msdn.microsoft.com/en-us/library/bb198129.aspx不能使用*操作符将vector与double类型的对象相乘,这就是导致错误的原因。
这一行出现问题
position = currentTime * p1 + (1 - currentTime) * p2
您正在尝试将currentTime
和double
与p1
和Vector
实例相乘。
要对Vector实例进行乘法运算,需要使用Vector。用