2016-12-01 164 views
0

我目前正在一个项目中,我需要在JFrame的中心使用java.awt.GraphicsdrawLine()drawPolygon()方法绘制一个非直角三角形。这两种方法都要求所有点的坐标都起作用。我的问题是,而不是点,我所有的都是三角形的所有角度和边长。我已经制定了的,我希望有什么可以帮助你想象我的问题,一个漂亮的图:爪哇角度在非直角三角形计算点

enter image description here

(编辑C在这个塞纳里奥的位置不固定悫A和B可能是轴下方的任何地方在AB上休息)

正如你可以从我的照片中看到的,我需要基于C的coordan坐在A的坐标上,有没有什么办法来计算这个给定的所有边的长度和角度的非右边三角形?

奖励:我会如何找到A的(x,y)值,该值有效地居中JFrame中间的三角形?

+1

使用三角法。这是一个几乎微不足道的问题。如果你还没有研究它,你真的需要为2D绘图。 –

+0

给出'A'的坐标,'C'的坐标可以完全由长度'b'和'A'处的角度确定 - 这是一个简单的线性方程;它是一个三角形的一部分的事实,直到你试图确定中心才是相关的。我将在坐标为'0,0'的位置开始所有的计算,然后_translate_结果。三角形的中心:http://www.dummies.com/education/math/trigonometry/how-to-pinpoint-the-center-of-a-triangle/ –

+0

我真的希望有人会发布答案,而不仅仅是评论说答案是三角学... –

回答

1

如果你知道角CAB,C点的坐标应为:

(x+b·sin(θ), y-b·cos(θ)) 

在Java中,有:

double Math.sin(double radians); 
double Math.cos(double radians); 

记住的角度需要采用弧度。如果你的角度是度数,请尝试:

double Math.sin(Math.toRadians(double degrees)); 
double Math.cos(Math.toRadians(double degrees)); 

希望这会有所帮助。

+0

谢谢!一旦你的声誉足够高,我建议用一张代表Theta在这两种情况下的照片来修改你的答案。 –