给定线段 x1
, y1
, x2
, y2
和圆弧(用 x1
, y1
, x2
, y2
, I
, j
定义;其中 I
是从 x1
到圆心的X方向距离, j
是距离从 y1
到圆心的Y方向; (x1,y1)
= (x2,y2)
的圆是圆 . ),如何找到这些几何的集合之间所有交点的坐标?
注意:弧也可以 x1
, y1
, x2
, y2
, R
给出, R
是半径,但是我已经有了将一个转换为另一个的机制 .
这是一个Java项目,我没有找到任何库或算法来确定这一点 .
确定两个线段之间的交叉点很简单,但其他情况要复杂得多 .
1 回答
你的问题归结为找到(1)直线,(2)直线弧,(3)弧弧之间的交点
(1)你可以在互联网上找到很多解决方案 . 这是一个:How do you detect where two line segments intersect?
(2)假设你有一条线和圆圈(而不仅仅是线段和圆弧) . 如果直线和圆相交,则可以这样计算点:http://mathworld.wolfram.com/Circle-LineIntersection.html
如果存在这一个或两个点,则必须检查它们实际上是否包含在线段和弧中 . 如果是这样,你有分数!
(3)在这里你再次假设你有两个圆圈并以这种方式找到点:http://mathworld.wolfram.com/Circle-CircleIntersection.html
最后再次检查点是否属于两个弧 .
如果您有这三种方法,您可以尝试贪婪的方式并尝试所有N ^ 2线段和弧的组合