我有两个三维坐标存储为六个int
值。
计算所描述位置之间float
距离的更有效方法是什么:
Vector3.distance( new Vector3( (float) a, (float) b, (float) c), new Vector3 ( (float) x, (float) y, (float) z)) ;
答案 0 :(得分:2)
#1:Unity中有一个函数:Vector3.Distance,正如您已经添加的那样。这是最有效的方法(唯一更好的选择是在第一个位置获取浮点值而不是整数)
#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);
}
编辑:这是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);
}