【发布时间】:2014-06-17 15:51:22
【问题描述】:
如何从另一个向量和距离创建向量?
例如,使用 vector3d(1,1,2) 和距离 12,创建另一个具有相同方向但长 12 个单位的向量。
【问题讨论】:
如何从另一个向量和距离创建向量?
例如,使用 vector3d(1,1,2) 和距离 12,创建另一个具有相同方向但长 12 个单位的向量。
【问题讨论】:
你想在你想要的方向找到unit vector;在 XNA 中,这是由Vector3.Normalize 给出的。然后你可以scalar multiply那个单位向量(根据定义,长度= 1)通过最终距离。
例如:
var originalVector = new Vector3(1, 1, 2);
var finalLength = originalVector.Length + 12; // "longer by 12", this could be whatever you want
originalVector.Normalize(); // make it a unit vector
var finalVector = originalVector * finalLength;
【讨论】:
originalVector * finalLength的结果赋值给originalVector。我用单独的变量来说明,但你可以做任何你想做的事,数学是一样的。
从数学的角度来看,Asik 的答案是 100% 正确的。如果您希望放大后的矢量位于原始矢量中,请使用
var originalVector = originalVector * finalLength;
【讨论】: