我目前正致力于一个程序,使用户可以绘制各种几何形状。但是,我在计算角度对象并将其准确放置到Canvas
面板上时遇到了一些问题。角度对象基本上是Arc2D
对象的扩展,它提供了一个名为computeStartAndExtent()
的附加方法。在我的Angle
类中,此方法计算并找到必要的起始和扩展角度值:
private void computeStartAndExtent()
{
double ang1 = Math.toDegrees(Math.atan2(b1.getY2() - b1.getY1(), b1.getX2() - b1.getX1()));
double ang2 = Math.toDegrees(Math.atan2(b2.getY2() - b2.getY1(), b2.getX2() - b2.getX1()));
if(ang2 < ang1)
{
start = Math.abs(180 - ang2);
extent = ang1 - ang2;
}
else
{
start = Math.abs(180 - ang1);
extent = ang2 - ang1;
}
start -= extent;
}
这是一个有点错误的代码,只有在我将两条线相互连接时才有效,但是,当我连接第三条线来制作三角形时,结果如下所示,
如您所见,ADB角度是唯一正确放置的角度。我无法想象如何克服这个问题。如果您需要一些额外的信息/代码,请告诉我。
编辑: b1和b2是computeStartAndExtent()
方法中的Line2D对象。
谢谢。
答案 0 :(得分:1)
可以做一些简化计算的事情:
示例代码;与你的不完全相同,因为我没有你的代码,但具有类似的功能:
:Dr REPLACEVALUE
结果: