无法在WPF中实现正确的广告牌行为

时间:2014-12-26 16:16:54

标签: wpf xna rotation

前夕好![/ p>

我在WPF上制作简单的模型编辑器,用于创建带有像素化皮肤的立方体头怪,并希望为其添加广告牌。

那么,我做什么

Vector3D unitZ = new Vector3D(0, 0, 1);
Vector3D direction = -this.camera.LookDirection;
double yaw = Vector3D.AngleBetween(unitZ, new Vector3D(0, 0, direction.Z));

并将旋转应用于平面。 它工作,但只有一半,因此AngleBetween函数总是返回正值。 因此,当我将父形状旋转到-45度时,AngleBetween返回45并消除父旋转。但是当我在45度角度旋转父角度时,AngleBetween再次返回45,结果我得到90度旋转。

任何解决方案?

还有一件事:请不要提供任何框架或工具包!感谢。

1 个答案:

答案 0 :(得分:0)

嗯,这就是AngleBetween方法在WPF中对3D向量的作用。它返回[0..180]度范围内的值。

就你的问题而言,我不是100%我理解你。 [0, 0, 1][0, 0, arbitrary number here]之间的角度只能为您提供三个不同的值:

  • 无法计算
  • 180
  • 0
  • -180如果可以签名。

因为我真的没有看到你怎么能得到45。

无论哪种方式,您都可以使用Vector.AngleBetween来保留标志。如果您的旋转只在一个轴上,那将起作用,例如其中一个组件保持不变。

如果这不符合您的需求,您应该只写下您需要的内容:Signed angle between two 3D vectors with same origin within the same plane