Java圈交叉点 - 中央部分

时间:2014-03-14 09:14:43

标签: java android geometry

我正在尝试获取弧的坐标(用蓝色表示)(以便我可以在视觉上绘制它们[在Android path.drawArc()]中的任何2个(最终$ n $)个圈子'中心'部分(用红色表示)。

here's a representation

我找到了this,但不幸的是,我根本没有数学意识!

我已经编码了一些东西来找到交叉点......如果有帮助吗?

1 个答案:

答案 0 :(得分:0)

我看不到path.drawArc(),只有Canvas.drawArcPath.addArcPath.arcTo。所有这些都需要一个RectF oval参数,我会猜测描述圆的大小和位置。因此,如果要绘制镜头形区域的右边界,则属于左圆的边界,因此您要将oval设置为左圆的边界框。然后你需要两个角度,startAnglesweepAngle。您可以从Math.atan2(y, x)获取它们,其中(x, y)是从圆心到其中一个交点的矢量。因此,了解交叉点将非常有用。您可以使用一个计算起始角度,另一个计算第一个弧线的结束角度。扫掠角度只是结束和开始之间的差异。对于第二个弧,反转开始和结束的角色,您将获得一个基本上封闭的路径,尽管您可能必须发出明确的close调用以使该闭合显式。

另一种方法是使用Path.op(circle1, circle2, Path.Op.INTERSECT)circle1circle2可由Path.addCircle组成。这种方法会将整个交集算法委托给Framework,但它确实需要最近的API(即API级别19),因此它不适用于旧设备。

以上所有内容都是未经测试的,从阅读参考资料并了解框架的行为方式。