Как я могу получить координаты центра прямоугольника в javafx? - PullRequest
0 голосов
/ 01 января 2019

Есть ли у кого-нибудь идеи о том, как получить координаты центра прямоугольника в javafx?Есть ли метод или алгоритм для этого, потому что я хочу знать центральное положение, в то время как прямоугольник вращается и движется.Я не смог найти решение в Интернете, поэтому надеюсь, что один из вас сможет мне помочь.

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Используйте метод localToParent для преобразования центра прямоугольника в систему координат родителя.

Центр Rectangle в локальных координатах равен

x = rect.x + rect.width/2
y = rect.y + rect.height/2

Пример

@Override
public void start(Stage primaryStage) throws Exception {
    Rectangle rect = new Rectangle(50, 50, 100, 100);
    Translate translate = new Translate();
    Rotate rotate = new Rotate(0, 0, 0);
    rect.getTransforms().addAll(translate, rotate);
    Circle circle = new Circle(5, Color.RED);

    AnimationTimer timer = new AnimationTimer() {

        @Override
        public void handle(long now) {
            double d = now / 5_000_000_000d;
            rotate.setAngle(d * 360);
            translate.setX((d % 2) * 300);
            translate.setY((d % 3) * 150);

            // set circle center to coordinates of rect's center
            Point2D center = rect.localToParent(rect.getX() + 0.5 * rect.getWidth(),
                    rect.getY() + 0.5 * rect.getHeight());
            circle.setCenterX(center.getX());
            circle.setCenterY(center.getY());
        }

    };
    Pane root = new Pane(rect, circle);

    timer.start();

    Scene scene = new Scene(root, 800, 800);
    primaryStage.setScene(scene);
    primaryStage.show();
}
0 голосов
/ 01 января 2019

Вы можете вычислить центр прямоугольника следующим образом:

center.x = position.x + width / 2
center.y = position.y + height / 2

Или, если вы представляете свой прямоугольник как 2 точки (два противоположных угла), вам придется использовать следующую формулу:

p0
+-------+
|       |
|       |
+-------+
       p1

center.x = (p0.x + p1.x) / 2
center.y = (p0.y + p1.y) / 2

Также: быстрый гугл дает Как найти координату центра прямоугольника? в качестве первого результата ...

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