我正在执行一项任务,尝试将带有折叠折痕的 2D 草图转换为完整的 3D 表示。 红线代表山谷,蓝线代表山峰。我想计算转换/映射坐标 {P1'...P8'}。我还没有找到任何可以自动执行此操作的好软件,但希望得到提示。
- a - 折叠角度
- P - 坐标
- E - 元素
- 蓝线-折叠山
- 红线-折叠谷
Folded 与 a1 = a2 = a3 = 90 deg (pi/2 rad) (折叠角) 和箭头作为表面法线
我正在使用 Matlab,但我正在寻找解决此问题的通用算法。
假设点 P0 在 origo 中固定并且元素 E1 不会更改其坐标,我应该如何最好地描述转换?我应该使用非齐次坐标还是齐次坐标、极坐标?
例如,P8 点依赖于其他坐标,而其他坐标又依赖于角度。
我想我可以为点(节点)使用某种邻接矩阵和/或将每个元素与其节点配对的矩阵。 例如:[E1 P0 P4 P5 P1 ; E2 P1 P5 P6 P2 ; ...]
每个坐标的变换是变换+旋转,变换取决于坐标/元素。但是连接多个元素会变得棘手......
如何将带有折叠图案的 2D“纸”巧妙地转换为 3D 坐标?
最佳答案
您可以遍历每个折叠折痕,并计算位于折痕一侧的所有像素的变换。
您可以使用转换矩阵来计算折叠点的坐标。看看the wikipedia article describing transformation matrix .
首先,平移所有点,使折痕与一个轴对齐,然后根据折痕的方向旋转折痕一侧的所有点。然后您可以反转第一个平移,使图形回到原来的位置。重复下一个折痕的过程,直到完全折叠图形。
使用 matlab,矩阵计算非常容易进行。
关于algorithm - 折叠一张纸(计算机视觉),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920221/