YanesdkのDistanceメソッドの誤差
Yanesdk.NET*1のYanesdk.Math.Vector2D.Distanceは、次のように実装されている。
/// <summary> /// 近似による距離(絶対値)の算出。sqrtを使っていない分だけ速い /// </summary> /// <param name="v"></param> /// <returns></returns> public double Distance(Vector2D v) { double ax = global::System.Math.Abs(X - v.X); double ay = global::System.Math.Abs(Y - v.Y); if ( ax > ay ) { return ax + ay / 2; } else { return ay + ax / 2; } }
近似をせず素直に計算するなら当然 sqrt(ax*ax+ay*ay) となるので、 ax > ay の範囲では誤差率は以下のようになる。
でまあ、new Vector2D(ax, ay) がX軸と為す角をθとするならば、先ほどの式は以下のようになる。
細かい計算はしていないが最大12%程度の誤差になるようだ。
*1:バージョンは1.03