小编Pon*_*ntz的帖子

折叠一张纸(计算机视觉)

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

折叠模式

  • a - 折叠角度
  • P - 坐标
  • 电子元素
  • 蓝线 - 折叠山
  • 红线 - 折叠的山谷

折叠为 a1 = a2 = a3 = 90度(π/ 2弧度)(折叠角度)和箭头为surfare法线

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

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

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

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

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

如何将带有折叠图案的2D"纸张"整齐地转换为3D坐标?

algorithm geometry linear-algebra

6
推荐指数
1
解决办法
661
查看次数

在F#模式匹配中拆分代码块以提高可读性

// Standard pattern matching.
let Foo x =
  match x with
  | 1 ->
      // ... lots of code, only evaluated if x == 1
  | 2 ->
      // ... lots of code, only evaluated if x == 2

// Standard pattern matching separated out, causing exception.
let Bar x =
  let valueOne = //... lots of code, evaluated always. Exception if value <> 1.
  let valueTwo = //... lots of code, evaluated always. Exception if value <> 2.

  match …
Run Code Online (Sandbox Code Playgroud)

f# pattern-matching lazy-evaluation code-readability active-pattern

3
推荐指数
1
解决办法
162
查看次数