我在應用旋轉後移動3D對象時出現問題。移動和旋轉功能都可以獨立完成。但問題是當我在旋轉之後移動一個對象時,對象不遵循鼠標並沿着奇怪的方向前進。如果有人能看到我的缺陷,我會很感激。謝謝!這裏是我的代碼:旋轉後移動3D對象
private void Rotate()
{
double angle;
bool willangle = Double.TryParse(AngleRot.Text.ToString(), out angle);
RectangleVisual3D rect = (RectangleVisual3D)LastSelectedObject;
AxisAngleRotation3D r = new AxisAngleRotation3D(new Vector3D(0, 0, 1), angle);
RotateTransform3D rot = new RotateTransform3D(r, rect.Origin);
rect.Transform = Transform3DHelper.CombineTransform(rect.Transform, rot);
LastSelectedObject = rect as ModelVisual3D;
}
private void MoveObject(MouseEventArgs e)
{
if (LastSelectedObject is RectangleVisual3D)
{
RectangleVisual3D rect = (RectangleVisual3D)LastSelectedObject;
Point3D? origin = GetPoints(e);
if (origin == null)
return;
rect.Origin = (Point3D)origin;
LastSelectedObject = rect as ModelVisual3D;
}
}
由互聯網故障毆打。詳細說明,獨立跟蹤移動和旋轉非常重要,並且如果將獨立地允許這些移動和旋轉,則將它們應用於每次從原點移動然後旋轉順序。雖然我建議即使使用四元數而不是內部變換,但允許將運動應用於新旋轉的座標系也是有用的,例如,如果您正在模擬飛行。 – Godeke
好的,所以我需要更新我旋轉後的座標?我不知道該怎麼做... –