やあみんな。2つのベクトル間の角度を計算していますが、Math.Acos()は、入力がコサインの範囲外(-1> input && input> 1)の場合にNaNを返すことがあります。正確にはどういう意味ですか?誰かが何が起こっているのか説明できるでしょうか?どんな助けでも大歓迎です!
これが私の方法です:
public double AngleBetween(vector b)
{
var dotProd = this.Dot(b);
var lenProd = this.Len*b.Len;
var divOperation = dotProd/lenProd;
// http://msdn.microsoft.com/en-us/library/system.math.acos.aspx
return Math.Acos(divOperation) * (180.0 / Math.PI);
}
これが私の実装Dot
ですLen
:
public double Dot(vector b)
{
// x's and y's are lattitudes and longitudes (respectively)
return ( this.From.x*b.From.x + this.From.y*b.From.y);
}
public double Len{
get
{
// geo is of type SqlGeography (MS SQL 2008 Spatial Type) with an SRID of 4326
return geo.STLength().Value;
}
}