1

我有定义生成器(想想画笔)的分段曲线和表示画笔遵循的路径的分段曲线。我希望生成生成器曲线在扫过路径时创建的边界。

这适用于类似工程 CAD 的应用程序。我正在寻找任何语言的通用算法或代码示例。

4

3 回答 3

4

我建议以下论文:

  • Jae-Woo Ahn、Myung-Soo Kim 和 Soon-Bum Lim 的“2D 曲面物体的近似一般扫描边界”
  • Thierry Pudet 的“压力笔触的实时拟合”
  • “图形规范的画笔轨迹方法:一些代数解决方案”
于 2015-04-17T13:24:33.433 回答
1

我们使用的实际答案太复杂,无法完整发布,但要总结一下。

  1. 沿变换后的路径定期对曲线进行采样
  2. 通过将每个样本的顶点连接到下一个和前一个样本来构建三角形网格
  3. 通过其相邻三角形法线指向相反方向来识别候选轮廓边
  4. 使用扫描线算法在交叉点处分割所有边。这是棘手的部分,因为我们发现我们必须使用 BigRational 算法或细微的数值错误来破坏拓扑结构。
  5. 将分割边转换为平面图
  6. 找到离某个外部测试点最近的分割边
  7. 在图表的外部走动。(同样所有的测试都是用大理性完成的)

    由于 BigRational 计算,该算法的性能并不出色。然而,我们尝试了很多方法在浮点中做到这一点,并且我们总是得到结果图不是平面的数字边缘情况。如果图形不是平面的,那么你不能在它的外面走动。

于 2014-11-19T08:52:33.450 回答
0

如果您有一个任意复杂的形状沿任意路径平移和旋转,那么使用精确的方法确定扫过的区域(及其边界)将是一个非常棘手的问题。

您可能会考虑使用基于渲染的方法:

  1. 从黑色画布开始
  2. 密集采样移动形状的路径
  3. 对于每个样本位置和旋转,将形状渲染为白色
  4. 你现在有了一个对扫掠形状有相当好的估计的画布

您可以按照以下步骤进行操作:

  • (可选)进行一些图像处理以尝试修复由于过于稀疏地采样形状路径而引入的任何伪影
  • (可选)将画布通过寻边过滤器以获取扫描形状的边界
于 2013-06-06T23:45:17.477 回答