如何获取Java中知道角度,中点和长度的线的端点

时间:2016-09-09 00:10:44

标签: java swing geometry

我需要找到一条线的端点,知道它的中点,角度和长度。首先,我尝试了这个:

    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,我理解它们的意思,以便我了解它们的方式)所以,有人可以编写一个函数来返回一条基于其中点,角度和线的端点。长度,并向我解释它是如何工作的?

1 个答案:

答案 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;
        }