【发布时间】:2018-01-12 18:35:28
【问题描述】:
我有一个三角形的三个顶点:(x1,y1,z1); (x2,y2,z2); (x3,y3,z3)。 基本上,我想将这 3 个顶点转换到 XY 平面上,使顶点看起来像 (0,0); (光盘); (e,f)。
一旦我得到 XY 平面上的点,我会使用 2D 采样算法生成一些采样点。然后,我将逆变换应用于这些采样点,将其称为 :(l,m,0) 并对其进行变换回到 3D(某物,例如 (q,w,t))。
如果 Some 可以帮助我完成以下功能,我将非常高兴: Transform(),它将 3D Vertices 作为输入,并将其转换为 2D(XY PLane) 点。
InverseTransform(),将 2D 点作为输入,并将其转换为 3D(XYZ PLane) 点。
提前致谢!
【问题讨论】:
-
你试过什么?我的意思是它在我看来就像你想忽略 z 轴,只取 xy 并将其作为一个点返回.. 所以.. 是什么阻止你写一些东西来做到这一点
-
抱歉,刚刚编辑了!就像,一个顶点应该转换为原点,其他两个 3D 点将是:(a,b) 和 (c,d)
-
你应该阅读所有关于线性代数的文章
-
您需要
1:1映射而不是N:1投影,因为一旦将 3D 点投影到平面上,您就无法返回到原始 3D 坐标。但是,映射很可能无法使用 2D 插值或您想做的任何事情,因为1:1从 3D 到 2D 的映射通常不是连续的,并且会破坏其他维度中应用的任何几何特征。您最好的选择是更改您想要应用于 3D 的 2D 内容。在不知道它是什么的情况下,我们无法决定是否可能(即使您声称不可能,但这并不意味着它真的不可能)。 -
如果您只想要转换后的 3D 平面点,那么只需使用基向量和平面的原点在 2D 和 3D 之间转换即可。它比听起来更简单,请参阅 C++ plane interpolation from a set of points 和 Calculate Y of 3D point on 3D QUAD PLANE based on X,Z in that point