Algorithm 用直线求圆划分的边界

Algorithm 用直线求圆划分的边界,algorithm,computational-geometry,Algorithm,Computational Geometry,给定一个圆,我添加一条穿过圆的直线,它在两点处与圆相交,并在一点处与前面的每条直线相交 我想重复这个过程(一次添加一条直线),并计算出构成圆所划分部分边界的点 例如,我第一次这样做(第一行)时,它将圆分成两部分: 当我添加第二行时,它会将圆的这2个部分分为4个部分: 当我添加第三行时,它会将圆分成7部分: 获取这些点的有效算法是什么 每次我添加一条直线时,我都可以计算出直线与圆和前面其他直线相交的所有点,但我必须以某种方式找出这些点是哪些区域的边界,我不确定我是否完全理解这个问题,但是:

给定一个圆,我添加一条穿过圆的直线,它在两点处与圆相交,并在一点处与前面的每条直线相交

我想重复这个过程(一次添加一条直线),并计算出构成圆所划分部分边界的点

例如,我第一次这样做(第一行)时,它将圆分成两部分:

当我添加第二行时,它会将圆的这2个部分分为4个部分:

当我添加第三行时,它会将圆分成7部分:

获取这些点的有效算法是什么


每次我添加一条直线时,我都可以计算出直线与圆和前面其他直线相交的所有点,但我必须以某种方式找出这些点是哪些区域的边界,我不确定我是否完全理解这个问题,但是:

1) 直线/直线相交由Cramer实现

2) 线/圆相交是通过求解二次方程来实现的

3) 通过考虑在分割线的参数方程中注入点坐标时获得的所有符号,可以对每个区域的点进行分类(换句话说,是线左侧或右侧的点);这将为您提供所有区域的二进制标签(有些标签是不可能的)。


你也可以考虑一个三元表示法,如果你需要处理一个确切的直线上的点。

你必须找到多少个部分或者X-Y位置的交点?我需要找到多少个部分的形成,也需要找出你所添加的每一个线的交点的X-Y位置。找到该直线与圆的交点,将其转换为从圆原点开始的径向角度,然后将该角度插入到排序列表中(如果更容易,可以稍后排序)。最后,连续角度对之间的弧是圆段(加上列表中最后一个角度和第一个角度之间的最后一个弧)……可能是将每个弧段拆分为单独的弧段,并存储在某种图形结构中。然后,您必须按照可以通过叉积计算的轮廓(例如,下一个线段是相对于当前线段角度最小的线段)重建多边形部分。四叉树方法也可能是相关的…对于每个点,建立一个向量映射,它位于每条线的哪一侧。具有相同向量的所有点位于一个公共群中。我知道1)和2)。这些数字有点误导人,因为这些点只是为了直观地指示圆圈划分的不同部分。问题是给定一条切割圆的任意直线如何计算圆被分割成的每个多边形的边界。你有两个选择:1)软的,不计算边界,只是用N条线对应的N个符号标记区域-这足以知道你在哪个区域。2) 最难的是:计算线的排列。()+1表示链接。。但我确实觉得很烦人,页面让整个事情听起来很复杂,但却没有给出实际的算法。行的排列很困难。