多边形"袖子"被叫,他们是如何计算的?

时间:2015-01-06 17:28:04

标签: geometry polygon

当多边形旋转时,它会跳过当前和所需情况之间的所有可能旋转。这里有3张图片说明了我的意思:

这是当前的多边形:
current polygon

将其旋转45度(顺时针方向)将导致:
desired polygon

当前多边形按顺时针方向旋转45度,其间所有可能的情况都会导致:
complete polygon

如何实际调用这些“袖子”(中间情况),以及如何根据当前多边形和所需的旋转角度计算/近似这些“完整多边形”?

1 个答案:

答案 0 :(得分:0)

在CAD行业中,我们将此操作称为2d扫描或2d平面扫描;在这种情况下是2d平面旋转扫描。 (不要与sweep line algorithm混淆。)结果区域将是2d扫掠区域或2d扫掠面部,轮廓称为2d扫掠边界。

关于这个主题的几篇论文可以在这里找到:

您的2d旋转扫描的情况不像这些文件中考虑的情况那样一般。如果你考虑只扫描一条曲线 - 例如一条线或一条弧 - 那么2d中扫掠区域的边界曲线如下所示。想象一下在3d 中扫描曲线,其中曲线在绕轴旋转时沿旋转轴同时挤出。在这种情况下,你的2d扫描的边界将是3d扫掠表面的边界,投射回2d 加上扫描表面的3d silhouettes 投射回2d,取轴旋转作为轮廓创建的视图向量。

计算一般曲面的轮廓是非常重要的,但是对于沿旋转轴的旋转扫掠+挤压,轮廓将通过扫掠曲线的切线平行于旋转方向的点来描绘 - 即,垂直从旋转中心绘制的半径矢量。因此,计算2d区域的算法可能如下所示:

  1. 对于要旋转扫描的区域的每个边缘区段,

  2. 分割切线与旋转方向平行的边缘。

  3. 排除任何退化曲线 - 与旋转轴同轴的弧。

  4. 对于每个分割边缘线段,形成一个2d区域,包括曲线的起始位置,曲线的结束位置以及由弧线连接的起点和终点。由于我们在轮廓点处分开,所以应该没有自交叉点。

  5. 在开始位置,结束位置和第一步中创建的扫掠区域中,对{2}区域进行2d boolean