首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将三维平面(实体的正面视图)转换为二维坐标(XY平面)

将三维平面(实体的正面视图)转换为二维坐标(XY平面)
EN

Stack Overflow用户
提问于 2014-06-02 07:21:50
回答 1查看 1.5K关注 0票数 0

在我的程序中,我有一个坚实的顶部视图,我使用切割平面进行切割(通过在顶部视图- XY平面上画一条线)。在用这条线切割实体后,我必须在XY平面上显示切割件的正面,这样我就可以在纸上打印横截面图。因此,一旦我有一个矩形的切割面(在前面的视图- XZ平面),我必须转换它,以显示在XY平面。我如何使用VB.net来完成这个任务。

我在这里看到了这个问题:convert 3D plane to 2D和用户Kieth提供的代码。这个解决方案与我的问题有关吗?

编辑:此编辑与Nico Schertler的回答有关。我读过矢量和基本坐标几何。我该怎么得到方向向量?例如,切割我的实体立方体的裁剪行定义为: stPt(-1500,24038,0)和edPt(45500,24038,0)。实体的切割面为矩形: pt1(-350,24038,0),pt2(1335,24038,0),pt3(1335,24038,-350)和pt4(-350,24038,-350)。我必须转换这个矩形的每个坐标,这样它就位于XY平面上。目前是XZ飞机。在这里,方向向量是裁剪线的方向,还是矩形的每一条边?我希望我没有混淆任何人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 10:38:55

你基本上是想把3D点转换成一个局部的2D坐标系。为此,我们需要几样东西:

本地原点坐标。这可能是切割形状的质量中心或点平均值。不管怎么说,它应该和切割的形状在同一平面上。

局部向上向量的方向。这是简单的(0, 0, 1),因为您没有转换这个方向。

局部右向量的方向。这是由切割线的方向给出的。它是(rx, ry, 0)格式的。这个向量应该标准化。

然后,我们可以计算三维点(u, v)的局部坐标p如下:

代码语言:javascript
复制
d = p - origin;
u = dot(d, rightVector);
v = dot(d, upVector); //this is simply d.z because upVector=(0,0,1)

您可以使用本地坐标(u, v)来显示裁剪形状。这也可以用矩阵来表示:

代码语言:javascript
复制
/ u \   / rightVector.x  rightVector.y  rightVector.z \   / d.x \
\ v / = \ upVector.x     upVector.y     upVector.z    / * | d.y |
                                                          \ d.z /
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23989211

复制
相关文章

相似问题

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