如何使用线段创建二维弧的近似值?

sum*_*ame 5 delphi geometry 2d approximation delphi-2010

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

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

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

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

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

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

小智 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))