我有两个存储为六个 int
值的三维坐标。计算所述位置之间的float
距离的更有效方法是什么:
-
Vector3.distance( new Vector3( (float) a, (float) b, (float) c), new Vector3 ( (float) x, (float) y, (float) z)) ;
- 在将整数作为参数的函数中实现正确的数学,并将所有铸件浮动,所有 ^2,而平方c#中的平方根?
#1:在unity中有一个函数:vector3.distance,如您已经添加。这是最有效的方法(唯一更好的选择是获得浮点值,而不是首先获得ints)。
#2:
//unity
private Vector3 Int2Vector3 (int x, int y, int z) {
return new Vector3 ((float)Mathf.Sqrt(x), (float)Math.Sqrt(y), (float)Math.Sqrt(z));
}
//plain c#
private float Int2FloatSqrt (int a) {
return (float)Math.Sqrt(a);
}
edit :这是一个unity的.distance函数,可以更好地理解:
public static float Distance(Vector3 a, Vector3 b) {
Vector3 vector = new Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
return Mathf.Sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);
}