计算2个整数坐标点之间距离的最有效方法是什么?

时间:2016-06-21 06:00:20

标签: c# unity3d

我有两个三维坐标存储为六个int值。 计算所描述位置之间float距离的更有效方法是什么:

  1. Vector3.distance( new Vector3( (float) a, (float) b, (float) c), new Vector3 ( (float) x, (float) y, (float) z)) ;
  2. 在一个函数中实现正确的数学运算,将整数作为参数,并使所有的转换为浮点数,所有^ 2,以及普通c#中的平方根?

1 个答案:

答案 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); }