我在应用旋转后移动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
好的,所以我需要更新我旋转后的坐标?我不知道该怎么做... –