Witam i pozdrawiam. Chciałbym stworzyc cos na wzór układu słonecznego. na razie cos prostego, dodajac Słoncze Ziemie i Ksieżyc.
Ziemi i ksieżycowi tworze elipse. Pozniej z elipsy robocie scięzke po ktróej ma sie ruszac. I problem w tym ze Ziemie dobrze krązy wokol słónca, gorzej z ksiezycem który nie chce krazyc dookola ziemi tylko robi to dookoła slonca. A jak sie odpali kod to widac ze elipsa dla księzyca porusza sie tak jak powinna razem z ziemia ; /
public class Mojuklad extends Application {
public Sphere ziemia;
public Sphere ksiezyc;
@Override
public void start(Stage primaryStage) {
// Button btn = new Button();
// btn.setText("Say 'Hello World'");
// btn.setOnAction(new EventHandler<ActionEvent>() {
//
// @Override
// public void handle(ActionEvent event) {
// System.out.println("Hello World!");
// }
// });
Sphere star=new Sphere(45);
ziemia=new Sphere(45);
ksiezyc=new Sphere(25);
Ellipse ellipseZiemia = new Ellipse();
ellipseZiemia.setCenterX(star.getTranslateX());
ellipseZiemia.setCenterY(star.getTranslateY());
ellipseZiemia.translateXProperty().bind(star.translateXProperty());
ellipseZiemia.translateYProperty().bind(star.translateYProperty());
ellipseZiemia.setRadiusX(star.getBoundsInLocal().getWidth() / 2.0 +
1.01671388 * 70);
ellipseZiemia.setRadiusY(star.getBoundsInLocal().getHeight() / 2.0 +
0.98329134 * 70);
PathTransition transitionZiemia = new PathTransition();
transitionZiemia.setPath(ellipseZiemia);
transitionZiemia.setNode(ziemia);
transitionZiemia.setInterpolator(Interpolator.LINEAR);
transitionZiemia.setDuration(Duration.seconds(10.000017421));
transitionZiemia.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
transitionZiemia.setCycleCount(Timeline.INDEFINITE);
transitionZiemia.play();
Ellipse ellipseKsiezyc = new Ellipse();
ellipseKsiezyc.setCenterX(ziemia.getTranslateX());
ellipseKsiezyc.setCenterY(ziemia.getTranslateY());
ellipseKsiezyc.translateXProperty().bind(ziemia.translateXProperty());
ellipseKsiezyc.translateYProperty().bind(ziemia.translateYProperty());
ellipseKsiezyc.setRadiusX(ziemia.getBoundsInLocal().getWidth() / 2.0 +
1.01671388 * 70);
ellipseKsiezyc.setRadiusY(ziemia.getBoundsInLocal().getHeight() / 2.0 +
0.98329134 * 70);
// ellipse.setStrokeWidth(5);
PathTransition transitionKsiezyc = new PathTransition();
transitionKsiezyc.setPath(ellipseKsiezyc);
transitionKsiezyc.setNode(ksiezyc);
transitionKsiezyc.setInterpolator(Interpolator.LINEAR);
transitionKsiezyc.setDuration(Duration.seconds(1.000017421));
transitionKsiezyc.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
transitionKsiezyc.setCycleCount(Timeline.INDEFINITE);
transitionKsiezyc.play();
StackPane root = new StackPane();
root.getChildren().add(star);
root.getChildren().add(ellipseKsiezyc);
root.getChildren().add(ellipseZiemia);
root.getChildren().add(ziemia);
root.getChildren().add(ksiezyc);
Scene scene = new Scene(root, 800, 600);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Tuta cały kod, nie jest go duzo ale jest w nim zawarte wszystko co potrzebuje, tylko ze z tym wlasnie małym problemikiem :)
czy móglby mi ktos pomóc, wytlumaczyc jak to ogarnac?