首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2个Mesh.Box

2个Mesh.Box
EN

Stack Overflow用户
提问于 2014-02-27 21:39:43
回答 1查看 40关注 0票数 0

我使用的是C# (MDX)的directx。我的任务是把两个盒子(用Mesh.Box创建)放在一起。

顶部的盒子有:

宽度: 200高度: 10深度:1

最下面的框有:

宽度: 10高度: 100深度:1

两者合在一起应该看起来像

代码语言:javascript
复制
-----------
          -
          -
          -
          -

现在我有一个问题,那就是我不知道如何计算两者的正确翻译:

机顶盒:

代码语言:javascript
复制
d3dDevice.Transform.World = Matrix.Translation(0, 20, 30.0f);

底框:

代码语言:javascript
复制
d3dDevice.Transform.World = Matrix.Translation(195, -40, 30.0f);

现在,底部的长方体并不直接位于顶部的长方体之间。

我想我必须计算Z,但是我不知道我是怎么做的。有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-27 22:27:40

创建的长方体以原点为中心。所以你唯一需要做的就是调整x和y坐标。顶部框必须是比底部高的bottom height / 2 + top height / 2单位,左边必须是top width / 2 - bottom width / 2单位。所以:

代码语言:javascript
复制
//top box
d3dDevice.Transform.World = Matrix.Translation(-195, 55, 0);

//bottom box
d3dDevice.Transform.World = Matrix.Identity();

代码语言:javascript
复制
//top box
d3dDevice.Transform.World = Matrix.Translation(0, 55, 0);

//bottom box
d3dDevice.Transform.World = Matrix.Translation(195, 0, 0);

除此之外,您还可以指定任何其他转换。只要你把它用在两个盒子上。例如,移动方框:

代码语言:javascript
复制
//top box
d3dDevice.Transform.World = Matrix.Translation(30, 75, 30);

//bottom box
d3dDevice.Transform.World = Matrix.Translation(225, 20, 30);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22070287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档