我有4个盒子,位置如下图所示:
现在我想沿着Y轴(左手,红线)转动它们。
我使用Managed DX,我的第一个想法是对每个盒子说:
device.Transform.World = Matrix.RotationY(Geometry.DegreeToRadian(2)) * BoxPosition;
这适用于顶部和底部框。但是左边和右边的盒子沿着Y轴旋转,这是另一个。有人可以帮助我如何在正确的Y轴(不是全局轴)上打开它们吗?整个框的位置在右侧坐标中:
x = 12
y = 0
z = 0
答案 0 :(得分:1)
反过来说:
device.Transform.World = BoxPositionWithinGroup
* Matrix.RotationY(Geometry.DegreeToRadian(2))
* GroupPositionInWorld;
其中GroupPositionInWorld
为Matrix.Translation(12, 0, 0)
,BoxPositionWithinGroup
描述了该组中的“本地位置”(相对于群组位置)。
如果您想了解有关DirectX和矩阵的更多信息,请查看my blog post。