【发布时间】:2011-07-13 09:37:23
【问题描述】:
我正在为 2D 几何数据编写转换器。我必须转换的元素之一是圆弧。在源系统中,弧是用两个轴对齐的矩形来描述的。第一个矩形是圆弧所在的圆的边界框。第二个矩形是弧本身的边界框。约束是,弧的边界框必须与圆的边界框的两条边相交。我知道每个矩形的左上角和右下角的坐标。
目标系统对圆弧的描述如下:矩形是围绕圆的边界框,圆弧是圆的一部分。到目前为止,它与上述相同。然后我有两个点指定弧的起点和终点。两个点都必须正好在圆的“边缘”上。
问题是:您是否发现了一种计算圆弧起点和终点的简单方法?我已经看过this question,但看起来真的很复杂。也许有更简单的方法可以做到这一点......
到目前为止我的想法:
看来我必须计算圆弧边界框的边缘与圆的交点。可能有两种情况(由于上述限制):只有一条边与圆相交或两条边与圆相交。此外,所有其他边将始终位于圆外。
更新:起点和终点将圆分成两部分。这两个部分中的哪一个被绘制为圆弧,由起点和终点的顺序决定。圆弧总是从起点到终点按逆时针方向绘制。
【问题讨论】:
-
“只有一条边与圆相交”是什么情况?
-
另外,圆的边界框是正方形,不是吗? (也许我错过了一些重要的东西!)
-
@belisarius:你是对的,圆圈的边界框是正方形。但是第二个边界框可以并且在大多数情况下将是一个矩形。 “只有一条边与圆相交”的情况是边与圆相交两次。弧的端点都将具有相同的 x 或 y 坐标。