We describe an algorithm for solving an important geometric problem arising in computer-aided manufacturing. When cutting away a region from a solid piece of material -- such as steel, wood, ceramics, or plastic -- using a rough tool in a milling machine, sharp convex corners of the region cannot be done properly, but have to be left for finer tools that are more expensive to use. We want to determine a toolpath that maximizes the use of the rough tool. In order to formulate the problem in mathematical terms, we introduce the notion of bounded convex curvature. A region of points in the plane $Q$ has bounded convex curvature if for any point $x\in\partial Q$, there is a unit disk $U$ and $\varepsilon>0$ such that $x\in \partial U$ and all points in $U$ within distance $\varepsilon$ from $x$ are in $Q$. This translates to saying that as we traverse the boundary $\partial Q$ with the interior of $Q$ on the left side, then $\partial Q$ turns to the left with curvature at most $1$. There is no bound on the curvature where $\partial Q$ turns to the right. Given a region of points $P$ in the plane, we are now interested in computing the maximum subset $Q\subseteq P$ of bounded convex curvature. The difference in the requirement to left- and right-curvature is a natural consequence of different conditions when machining convex and concave areas of $Q$. We devise an algorithm to compute the unique maximum such set $Q$, when the boundary of $P$ consists of $n$ line segments and circular arcs of arbitrary radii. In the general case where $P$ may have holes, the algorithm runs in time $O(n^2)$ and uses $O(n)$ space. If $P$ is simply-connected, we describe a faster $O(n\log n)$ time algorithm.
翻译:我们描述一个用于解决计算机辅助制造中出现的重要几何问题的算法。 当将一个区域从一块固态材料(例如钢、木、陶瓷或塑料)中切除出来时, 如果在磨机中使用粗糙的工具, 该区域尖锐的锥形角无法正确完成, 但必须留待更精细的工具使用更昂贵的工具。 我们想要确定一个能最大限度地使用粗化工具的工具路径。 为了用数学术语来表述问题, 我们引入了“ 捆绑的曲线”概念。 当平面上的一个点( $ ) 区域里有一个美元, 如果在任何点上 $\ 平面 Q, 一个单位的硬盘美元和 $ ; 当我们穿越边界时, 美元 美元 美元 的正方块里, 美元里程里程里程里程里值是美元 。 当我们穿越边界时, 美元里程里程里程里程里值是“ 美元” 。 然后, 美元里程里程里程里程里是“ 美元里程里程里程里程里程里程里程里是美元里程里程里程里的“美元”。