我需要找到一条线的端点,知道它的中点,角度和长度。首先,我尝试了这个:
public Point getEndpointA(Point midpoint, double angle, double length) {
Point a = new Point(0, 0);
a.x = midpoint.x + (int) length * Math.cos(angle);
a.y = midpoint.y + (int) length * Math.sin(angle);
return a;
}
public Point getEnpointB(Point midpoint, double angle, double length) {
Point b = new Point(0, 0);
b.x = midpoint.x + (int) length * Math.cos(-angle);
b.y = midpoint.y + (int) length * Math.sin(-angle);
return b;
}
然后我调用这些函数来获取行的连接点。然而,这是不准确的,并且这些要点并非放在我希望的地方。然后,我尝试使用距离公式进行实验,但这并不起作用,因为我只是刚刚开始使用代数我而且我无法摆脱指数和激进的符号,这在代数I中没有涉及。(我看了函数sin和cos,我理解它们的意思,以便我了解它们的方式)所以,有人可以编写一个函数来返回一条基于其中点,角度和线的端点。长度,并向我解释它是如何工作的?
答案 0 :(得分:1)
您想指定角度,如下所示?
public Point getEndpointA(Point midpoint, double angleDegee, double length) {
Point a = new Point(0, 0);
// convert degrees=>radians
final double angleRad = Math.toRadians(angleDegee);
a.x = (int) (midpoint.x + (int) length * Math.cos(angleRad));
a.y = (int) (midpoint.y + (int) length * Math.sin(angleRad));
return a;
}
public Point getEndpointB(Point midpoint, double angleDeg, double length) {
Point b = new Point(0, 0);
final double angleRad = Math.toRadians(angleDeg + 180d);
b.x = (int) (midpoint.x + (int) length * Math.cos(angleRad));
b.y = (int) (midpoint.y + (int) length * Math.sin(angleRad));
return b;
}