【发布时间】:2010-06-14 07:28:15
【问题描述】:
我无法弄清楚从向上和观察向量计算倾斜(滚动)角的公式,尽管我觉得这个角度必须在垂直于观察向量的平面中测量。任何提示表示赞赏。仅供参考,我使用 WPF。
我已经发布了another question here,这是同样的问题,但只用数学表示。
【问题讨论】:
我无法弄清楚从向上和观察向量计算倾斜(滚动)角的公式,尽管我觉得这个角度必须在垂直于观察向量的平面中测量。任何提示表示赞赏。仅供参考,我使用 WPF。
我已经发布了another question here,这是同样的问题,但只用数学表示。
【问题讨论】:
这是确定银行的最终代码。请注意,我需要确定角度的符号:
// project Y on plan perpendicular to look
Vector3D Yproj = new Vector3D(
-(lookDirection.Y * lookDirection.X),
1 - (lookDirection.Y * lookDirection.Y),
-(lookDirection.Y * lookDirection.Z));
Yproj.Normalize();
// get absolute angle between Y projected and Up
double absAngle = Vector3D.AngleBetween(upDirection, Yproj);
// magic formula
Vector3D cross = Vector3D.CrossProduct(upDirection, Yproj);
double dot = Vector3D.DotProduct(lookDirection, cross);
// set actual signed angle
BDeg = (dot >= 0) ? absAngle : -absAngle;
【讨论】: