在平面中缩放3D点

时间:2015-08-06 08:49:11

标签: math 3d geometry

我在同一(已知)平面上有一些点(3D)。现在我想在平面内缩放这些点而不是整个3D空间。

是否有一些快速的解决方案,例如修改后的缩放矩阵? 有人能帮助我吗?

感谢。

编辑:我更多地寻找一个想法/伪代码如何做到这一点。如果你想使用MatLab或一些方便的语言

1 个答案:

答案 0 :(得分:1)

您的飞机可以通过三个非共线点P0, P1, P2或其隐含的等式来识别,

A.x + B.y + C.z + D = 0

在第一种情况下,考虑向量P0P1并将其标准化(U = P0P1/|P0P1|)。然后计算与第一个V = P0P2 - (P0P2.U).U正交的第二个向量,并将其标准化。

在第二种情况下,您可以使用轴(-D/A, 0, 0), (0, -D/B, 0), (0, 0, -D/C)获取三个交叉点,并且您回到第一种情况(但请注意退化情况)。

使用这两个向量通过点积计算任意点P = (X, Y, Z)的所需2D坐标

(x, y) = (P.U, P.V)

(此转换是一种轮换,可使P0P1x轴平行,并将P0P1P2置于平面xy中。)