Geometry 有没有一个简单的算法可以找到几个圆的包络线?
给定二维表面上的许多点和这些点的半径,我可以很容易地为它们画圆。我需要的是一个算法,只画信封(我要找的是正确的词?)或这些组合圆的外边界。此外,第二组圆可以“侵入”这些圆,从而形成一种“边界”Geometry 有没有一个简单的算法可以找到几个圆的包络线?,geometry,Geometry,给定二维表面上的许多点和这些点的半径,我可以很容易地为它们画圆。我需要的是一个算法,只画信封(我要找的是正确的词?)或这些组合圆的外边界。此外,第二组圆可以“侵入”这些圆,从而形成一种“边界” 您可以分两步绘制 1) 使用以下方法绘制轮廓:对于每个点,使用您最喜欢的圆绘制方法绘制一个圆,但在绘制像素之前,请确保它不包含在任何其他圆内。对每一点都这样做,你就会得到你的提纲 2) 使用以下方法绘制不同集合之间的边界:对于不同集合中的每对点,计算圆的两个交点。如果存在交点,则可以将边界绘制为连接这两点
您可以分两步绘制 1) 使用以下方法绘制轮廓:对于每个点,使用您最喜欢的圆绘制方法绘制一个圆,但在绘制像素之前,请确保它不包含在任何其他圆内。对每一点都这样做,你就会得到你的提纲
2) 使用以下方法绘制不同集合之间的边界:对于不同集合中的每对点,计算圆的两个交点。如果存在交点,则可以将边界绘制为连接这两点的线段。但是,您必须绘制两条线,一条用于圆A,另一条用于圆B。要绘制圆A的线,请稍微将线段向点A偏移。然后,使用您最喜欢的线绘制方法,但在绘制像素之前,请确保它更靠近点A,而不是相反集合的任何其他点。画完线后,重复圆B的过程。注意,由于不同集合的点不对称,不能保证两个线段的长度相同。但是,当绘制所有轮廓和边框时,它将始终形成闭合形状。绘制磁盘并集轮廓的快速方法是
- 用黄色填充所有磁盘,然后
- 用较小的半径将所有磁盘填充为白色
有一种替代方法可以在所有情况下工作:
- 用零填充图像,然后对于所有磁盘,用到圆周的距离值(中心最大值)填充每个像素,但只保留到目前为止的最大值
- 执行此操作时,请使用达到该最高值的磁盘的颜色填充第二个图像。(使用背景色初始化图像。)
- 最后,使用颜色贴图为高度小于所需笔划宽度的像素着色