I want to have a right-handed Cartesian coordinate system in JavaFX, so (0,0) at lower left corner of window, x increasing to the right and y increasing upwards. I can't figure out how to do that with transforms. If I apply a rotation transform, the buttons will be upside down. All I want is to be able to use this coordinate system instead of the default one.
As mentioned in the JavaFX documentation (see chapter Y-down versus Y-up), Y down is used by many 2D graphics libraries, which is where JavaFX has started.
To force Y up and correct drawing, you could put all your content in a rotated parent node:
// Rotate camera to use Y up. camera.setRotationAxis(Rotate.Z_AXIS); camera.setRotate(180.0); // Rotate scene content for correct drawing. Group yUp = new Group(); yUp.setRotationAxis(Rotate.Z_AXIS); yUp.setRotate(180.0); Scene scene = new Scene(yUp); scene.setCamera(camera);
Now add everything to
yUp to use those nodes like in a Y up environment.
Bear in mind that this is fine in 2D space. If you come up with additional 3D features, make sure your models grow in negative Y direction. Otherwise you would have to use another container.