我使用的是C# (MDX)的directx。我的任务是把两个盒子(用Mesh.Box创建)放在一起。
顶部的盒子有:
宽度: 200高度: 10深度:1
最下面的框有:
宽度: 10高度: 100深度:1
两者合在一起应该看起来像
-----------
-
-
-
-现在我有一个问题,那就是我不知道如何计算两者的正确翻译:
机顶盒:
d3dDevice.Transform.World = Matrix.Translation(0, 20, 30.0f);底框:
d3dDevice.Transform.World = Matrix.Translation(195, -40, 30.0f);现在,底部的长方体并不直接位于顶部的长方体之间。
我想我必须计算Z,但是我不知道我是怎么做的。有人能帮我吗?
发布于 2014-02-27 22:27:40
创建的长方体以原点为中心。所以你唯一需要做的就是调整x和y坐标。顶部框必须是比底部高的bottom height / 2 + top height / 2单位,左边必须是top width / 2 - bottom width / 2单位。所以:
//top box
d3dDevice.Transform.World = Matrix.Translation(-195, 55, 0);
//bottom box
d3dDevice.Transform.World = Matrix.Identity();或
//top box
d3dDevice.Transform.World = Matrix.Translation(0, 55, 0);
//bottom box
d3dDevice.Transform.World = Matrix.Translation(195, 0, 0);除此之外,您还可以指定任何其他转换。只要你把它用在两个盒子上。例如,移动方框:
//top box
d3dDevice.Transform.World = Matrix.Translation(30, 75, 30);
//bottom box
d3dDevice.Transform.World = Matrix.Translation(225, 20, 30);https://stackoverflow.com/questions/22070287
复制相似问题