package gl8080.physics.view; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.Box; import javafx.scene.shape.DrawMode; public class Axis implements Content { private static final double AXIS_THICKNESS = 0.5; private static final double PLANE_THICKNESS = 0.1; private Group group = new Group(); public Axis(double length) { this.createAxis(length); this.createPlane(length); } private void createAxis(double length) { Box x = new Box(length, AXIS_THICKNESS, AXIS_THICKNESS); x.setMaterial(new PhongMaterial(Color.BLUE)); x.setTranslateX(length / 2.0); Box y = new Box(AXIS_THICKNESS, length, AXIS_THICKNESS); y.setMaterial(new PhongMaterial(Color.RED)); y.setTranslateY(length / 2.0); Box z = new Box(AXIS_THICKNESS, AXIS_THICKNESS, length); z.setMaterial(new PhongMaterial(Color.GREEN)); z.setTranslateZ(length / 2.0); this.group.getChildren().addAll(x, y, z); } private void createPlane(double length) { Box xzPlane = new Box(length, PLANE_THICKNESS, length); xzPlane.setDrawMode(DrawMode.LINE); xzPlane.setTranslateX(length / 2.0); xzPlane.setTranslateZ(length / 2.0); Box xyPlane = new Box(length, length, PLANE_THICKNESS); xyPlane.setDrawMode(DrawMode.LINE); xyPlane.setTranslateX(length / 2.0); xyPlane.setTranslateY(length / 2.0); Box yzPlane = new Box(PLANE_THICKNESS, length, length); yzPlane.setDrawMode(DrawMode.LINE); yzPlane.setTranslateY(length / 2.0); yzPlane.setTranslateZ(length / 2.0); this.group.getChildren().addAll(xzPlane, xyPlane, yzPlane); } @Override public Node getNode() { return this.group; } @Override public void refresh() { } }