Какое правильное уравнение для нахождения координат x и y на основе угла и расстояния? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь реализовать программу на JavaFX. У меня есть изображение струи, которая может вращаться на 360 вокруг своей центральной оси. Я перевел координаты x, y из верхнего левого угла в центр. Идея заключается в том, что когда я перемещаю изображение вперед, оно выводит aws линию из исходного положения в новое положение в направлении, на которое указывает изображение. Я могу получить текущий угол, используя метод getRotate () на узле, который принимается равным 0/360 в положении 12 часов. Угол указывается в градусах, но при необходимости он не может быть заменен радианами. Начальные координаты x, y находятся в центре изображения. Проблема в том, что я не знаю правильное уравнение, которое можно использовать для получения полных 360, используя панель эффектов, которая имеет начало отсчета 0, 0 в верхнем левом углу, значение увеличивается вправо и вниз. Я попытался использовать endX = startX + (cos (угол) и endY = startY + (sin (угол), но это не работает. Линии нарисованы на противоположной стороне от того, что они должны быть, или так кажется, и углы) также неверны, не совпадают с центральной осью изображения (как видно на изображении, оно пошло назад и не выровнено. думаю, что они движутся против часовой стрелки, когда они должны быть по часовой стрелке. По крайней мере, это то, что происходит Любые идеи?

        //FxTimer.runPeriodically(Duration.ofMillis(turtleSpeed), () -> {
            double startX = imageView.getX();
            double startY = imageView.getY();
            double endX = (startX + (distance * Math.cos(Math.toRadians(imageView.getRotate()))));
            double endY = (startY + (distance * Math.sin(Math.toRadians(imageView.getRotate()))));
            this.imageView.setX(endX);
            this.imageView.setY(endY);
            if(!(penUp)) {
                Line line = new Line(startX, startY, endX, endY);
                line.setStroke(penColour);
                this.getChildren().add(line);
                imageView.toFront();
            }

РЕДАКТИРОВАТЬ Я переместил начало координат в центр панели и преобразовал в радианы, но все равно не радости. Линия теперь выравнивается нормально, но движение изображения составляет 90 градусов «в противофазе»

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...