我正在尝试在面板内绘制 Arc2D 对象。但是我不确定如何计算它。我给出的是起点 Point2D 和终点 Point2D 和半径。问题是半径变化时,startAngle和AngleExtent参数每次都不一样。另一个问题是,由于半径发生变化,包含圆弧的“待”圆的中心每次都在不同的点,另一个参数根据输入而变化,所以我不能使用(或不知道如何)使用 setCenter() 方法。
任何帮助表示赞赏!
我正在尝试在面板内绘制 Arc2D 对象。但是我不确定如何计算它。我给出的是起点 Point2D 和终点 Point2D 和半径。问题是半径变化时,startAngle和AngleExtent参数每次都不一样。另一个问题是,由于半径发生变化,包含圆弧的“待”圆的中心每次都在不同的点,另一个参数根据输入而变化,所以我不能使用(或不知道如何)使用 setCenter() 方法。
任何帮助表示赞赏!
两个点和一个半径定义了两个弧(二维)。Circle
您可以通过计算以您的两个点为中心的两个半径的交点 (java.awt.geom.Area.intersects) 来找到它们的中心点r
。圆弧的中心点将是您的两个初始点之间该区域周长上的点。
你需要的不仅仅是这些。你需要两个点,半径和凹度。
想象在两个端点处有两个圆,每个圆都有一个半径。它们在两个不同的点相交(假设可以绘制)。其中之一是您的中心点,您可以通过了解凹度来选择哪一个(即圆弧是向上还是向下)。
您使用您选择的中心点绘制弧线并从一个端点到另一个端点。
你可以在这里找到找到两个圆的交点的公式:http: //mathworld.wolfram.com/Circle-CircleIntersection.html
请注意,您最好有两个交点。如果有零或无穷大,你不能很好地在它们之间画一条弧(你的弧不会跨越,或者你的弧的长度为零)。