6

我正在尝试将带有折叠折痕的 2D 草图转换为完整的 3D 表示。红线将是山谷和蓝山/顶部。我想计算转换/映射坐标 {P1'...P8'}。我还没有找到任何可以自动执行此操作的好软件,但希望得到提示。

折叠图案

  • a - 折叠角
  • P - 坐标
  • E-元素
  • 蓝线——折山
  • 红线——折谷

折叠a1 = a2 = a3 = 90 度 (pi/2 rad)(折叠角)和箭头作为表面法线

我正在使用 Matlab,但我正在寻找解决这个问题的通用算法。

假设点P0固定在 origo 并且元素E1不会改变其坐标,我应该如何最好地描述转换?我应该使用非齐次坐标还是齐次坐标,极坐标?

例如,点 P8 取决于取决于角度的其他坐标。

我想我可以为点(节点)和/或将每个元素与其节点配对的矩阵使用某种邻接矩阵。例如:[E1 P0 P4 P5 P1 ; E2 P1 P5 P6 P2 ; ...]

每个坐标的变换是变换+旋转,变换取决于坐标/元素。但是连接几个元素会变得很棘手......

如何将带有折叠图案的 2D“纸”巧妙地转换为 3D 坐标?

4

3 回答 3

1

您可以遍历每个折叠折痕,并计算位于折痕一侧的所有像素的变换。

您可以使用变换矩阵来计算折叠点的坐标。查看描述变换矩阵的维基百科文章

首先,平移所有点,使折痕与轴对齐,然后根据折痕的方向旋转折痕一侧的所有点。然后,您可以反转第一个平移,使图形回到原来的位置。用下一个折痕重复这个过程,直到你完全折叠了图形。

使用matlab,矩阵计算很容易进行。

于 2012-06-06T19:10:42.307 回答
1

您也许可以使用用于描述具有多个旋转关节的机器人的技术;比您的问题可以描述为正向运动学问题。另一个有趣的阅读可能是这个

于 2012-06-06T21:10:17.003 回答
0

您只想对线一侧的每个点应用线性变换。

变换是围绕轴的旋转,其变换矩阵由下式给出

在此处输入图像描述

由于轴不以原点为中心,因此您需要先对原点应用平移,然后进行旋转,然后再平移回来。

于 2012-06-06T22:15:05.487 回答