package gl8080.physics.view; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.transform.Rotate; import javafx.scene.transform.Translate; public class TransformGroup { private Group rootGroup = new Group(); private Group ajustCenterGroup = new Group(); private Rotate rotateX = new Rotate(0.0, Rotate.X_AXIS); private Rotate rotateY = new Rotate(0.0, Rotate.Y_AXIS); private Translate translate = new Translate(); public TransformGroup(ViewPoint center) { this.ajustCenter(center.x, center.y, center.z); this.rootGroup.getChildren().add(this.ajustCenterGroup); this.rootGroup.getTransforms().addAll(rotateX, rotateY, translate); } private void ajustCenter(double centerX, double centerY, double centerZ) { this.ajustCenterGroup.setTranslateX(centerX); this.ajustCenterGroup.setTranslateY(centerY); this.ajustCenterGroup.setTranslateZ(centerZ); } public void add(Node node) { this.ajustCenterGroup.getChildren().add(node); } public void rotate(double dx, double dy) { double newX = this.rotateX.getAngle() + dx; double newY = this.rotateY.getAngle() + dy; if (newX < -90.0) { newX = -90.0; } else if (90.0 < newX) { newX = 90.0; } this.rotateX.setAngle(newX); this.rotateY.setAngle(newY); } Group getGroup() { return this.rootGroup; } }