圆与轴对齐的矩形之间的交点

时间:2011-03-11 10:21:12

标签: math geometry 2d

我正在为2D几何数据编写转换器。我必须转换的元素之一是弧。在源系统中,弧被描述为具有两个轴对齐的矩形。第一个矩形是圆弧的边界框,圆弧是圆弧的一部分。第二个矩形是弧本身的边界框。约束是,弧的边界框必须与圆的边界框的两个边相交。我知道每个矩形的左上角和右下角的坐标。

目标系统描述如下弧:矩形是围绕弧的一部分的边界框。到目前为止,它与上述相同。然后我有两个点指定弧的起点和终点。这两个点必须完全位于圆圈的“边缘”上。

问题是:您是否看到了计算弧的起点和终点的简便方法?我已经看过this question但看起来真的很复杂。也许有一种更简单的方法可以做到这一点......

到目前为止我的想法:

似乎我必须计算弧的边界框边缘与圆的交点。有两种情况是可能的(由于上述限制):只有一条边与圆相交或两条边与圆相交。此外,所有其他边缘将始终位于圆圈之外。

更新:起点和终点分为两部分。两个部分中的哪一个作为弧绘制,由起点和终点的顺序决定。电弧始终从开始到结束点逆时针绘制。

1 个答案:

答案 0 :(得分:1)

调用外框坐标topleftbottomright。那么中心和半径是:

centre.x = (left + right)/2
centre.y = (top + bottom)/2
radius = (right - left)/2

由此我们可以编写一个方程,必须满足圆周上的所有点:

(x - centre.x) * (x - centre.x) + (y - centre.y) * (y - centre.y) = radius * radius

内框坐标为您提供xy的可能值。一次替换一个并以标准quadratic equation解决。如果有一个真正的解决方案并且相应的点在内框的范围内,那就是一个点。鉴于原始数据的限制,您应该发现有两点 - 这些是您的答案。

相关问题