5

我有一个由线段和圆弧组成的折线轮廓,我想将其挤压成棱镜。

由于我的挤压功能只支持直边多边形,我需要使用线段来近似弧。

圆弧通过起点、中心点和扫角 (CCW) 定义。

我需要显示的扫角范围从 <10° 到 179.9°,半径范围从 0.3 毫米到 300 毫米。

我目前计算要计算的弧顶点数量并以原始方式将它们添加到我的多边形中:我只是在给定弧长的每毫米上放置一个顶点。虽然这可行,但对于具有大半径和小扫角的弧来说似乎非常低效。

必须有一种算法可以为所有类型的弧生成良好的近似值。如果有,我想知道一些关键字来缩小我的谷歌搜索范围。

4

1 回答 1

4

如果弧的后掠角为 a,半径为 r,那么具有相同端点的弦与弧之间的最大距离为 r*(1-cos(a/2)。如果通过将 n 个等距点沿它,那么弧和分段线之间的最大距离将为 r*(1-cos(a/(2*(n+1))))。

因此,如果您想保持 E 以下的最大距离,那么您可以沿弧放置 n 个新点,选择 n 以使 n+1 >= a/(2*acos(1 - E/r))

于 2010-09-08T14:04:56.473 回答