前夕好![/ 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度旋转。
任何解决方案?
还有一件事:请不要提供任何框架或工具包!感谢。
答案 0 :(得分:0)
嗯,这就是AngleBetween
方法在WPF中对3D向量的作用。它返回[0..180]
度范围内的值。
就你的问题而言,我不是100%我理解你。 [0, 0, 1]
和[0, 0, arbitrary number here]
之间的角度只能为您提供三个不同的值:
因为我真的没有看到你怎么能得到45。
无论哪种方式,您都可以使用Vector.AngleBetween
来保留标志。如果您的旋转只在一个轴上,那将起作用,例如其中一个组件保持不变。
如果这不符合您的需求,您应该只写下您需要的内容:Signed angle between two 3D vectors with same origin within the same plane