【问题标题】:How are polygon "sleeves" called and how are they calculated?如何调用多边形“袖子”以及如何计算它们?
【发布时间】:2015-01-06 17:28:04
【问题描述】:

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

这是当前多边形:

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

当前多边形顺时针旋转了 45 度,中间所有可能的情况都会导致:

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

【问题讨论】:

    标签: geometry polygon


    【解决方案1】:

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

    可以在此处找到有关该主题的几篇论文:

    您的 2d 旋转扫描案例并不像这些论文中考虑的案例那样普遍。如果您考虑只扫描一条曲线——比如一条线或一条弧线——那么二维扫描区域的边界曲线将如下所示。想象在 3d 中扫描曲线,其中曲线在绕轴旋转时同时沿旋转轴拉伸。在这种情况下,您的 2d 扫描的边界将是投影回 2d 的 3d 扫掠表面的边界加上投影回 2d 的扫掠表面的3d silhouettes,将旋转轴设为用于创建剪影的视图向量。

    计算一般曲面的轮廓很重要,但是对于沿旋转轴的旋转扫描+挤压,轮廓将由扫描曲线的切线平行于旋转方向的点追踪 - 即垂直到从旋转中心绘制的半径矢量。因此,计算二维面积的算法可能如下所示:

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

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

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

    4. 对于每个分割边段,形成一个由曲线的起始位置、曲线的结束位置以及由弧连接的起点和终点组成的二维区域。由于我们在轮廓点处分割,所以不应该有自相交。

    5. 对二维区域的起始位置、结束位置和第一步创建的扫掠区域进行2d boolean

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 2018-02-15
      • 1970-01-01
      • 2012-04-07
      • 2013-08-04
      • 1970-01-01
      相关资源
      最近更新 更多