2009年2月14日土曜日

WPFのクオータニオンのコンストラクタ

リフレクタで見て見た。ちょっと修正して見やすくすると

public Quaternion(Vector3D axisOfRotation, double angleInDegrees)
{
angleInDegrees = angleInDegrees % 360.0;
double num2 = angleInDegrees * (2*Math.Pi/360.0);
double length = axisOfRotation.Length;
Vector3D vectord = (Vector3D) ((axisOfRotation / length) * Math.Sin(0.5 * num2));
this._x = vectord.X;
this._y = vectord.Y;
this._z = vectord.Z;
this._w = Math.Cos(0.5 * num2);
this._isNotDistinguishedIdentity = true;
}

つまり、まず俺の計算はやっぱりどこか間違っていて、cos, sinの中は角度/2。それからこのコンストラクタは回転軸を正規化し、angleInDegreesは正確に回転角の意味。後、in degreesかよ!!

0 件のコメント: