Используйте метод 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();
}