我正在尝试重建玻尔原子模型,此时我已经设法让电子相对于轨道中的电子总数有一个适当的位置,但现在我正在努力使它们围绕所述轨道旋转。而不是让它们绕着它旋转。
好的,我有这个节点:
@FXML
private Circle orbital;
@FXML
private Circle Electron;
@FXML
private Circle Electron2;
@FXML
private Circle Electron3;
字符串
这就是让它们旋转的方法:
private void animate(Circle electron, Circle orbital, double angulo, int duration) {
Path path = new Path();
double anguloRadianes = Math.toRadians(angulo);//pass the angle to radians
double X = orbital.getCenterX() + orbital.getRadius() * Math.cos(anguloRadianes);//calculate the x coordinate of the position of the electron
double Y = orbital.getCenterY() + orbital.getRadius() * Math.sin(anguloRadianes);//calculate the y coordinate of the position of the electron
path.getElements().add(new javafx.scene.shape.MoveTo(X, Y));//Put the electrons in their respective places
path.getElements().add(new javafx.scene.shape.ArcTo(orbital.getRadius(), orbital.getRadius(), angulo, electron.getCenterX(), electron.getCenterY(), false, false));//This should trace the path of the electrons, which should be around the orbital
//Here start the animations
PathTransition pathTransition = new PathTransition();
pathTransition.setNode(electron);
pathTransition.setPath(path);
pathTransition.setInterpolator(javafx.animation.Interpolator.LINEAR);
pathTransition.setCycleCount(PathTransition.INDEFINITE);
pathTransition.setDuration(Duration.millis(duration));
pathTransition.play();
}
型
这就是我如何调用方法进行测试:
public void calcular(ActionEvent event){
try{
int num = Integer.parseInt(cantidad.getText());//gets the number of electrons for the orbital
double ang = 360 / num;//divide the 360 degrees of the circle by the total number of electrons
double x = orbital.getCenterX();
double y = orbital.getCenterY();
double rad = orbital.getRadius();
animate(Electron, orbital, ang * 1, 750);
animate(Electron2, orbital, ang * 2, 750);
animate(Electron3, orbital, ang * 3, 750);
}
catch (Exception e){
System.out.println(e);
}
}
型
1条答案
按热度按时间63lcw9qa1#
您可以:
PathTransition
来环绕某个东西。或
Timeline
设置Rotate
transform about a pivot point的动画。2D场景中的路径动画
二维示例演示了在时间轴中使用PathTransition与旋转技术。
的数据
字符串
在路径上定位节点
如果要调整环绕的起点,可以在播放环绕器动画之前应用以下行,并根据需要在0与1之间调整除数。
型
这将允许您将节点放置在任意路径上的任意位置(即使您没有沿路径设置动画)。
定位节点
对于圆与球体(如此处示例中的那些),您不会注意到节点方向,但对于非对称节点,您可能希望确定节点的方向,使其指向放置在路径上或沿着路径移动时所需的方向。
3D场景中的路径动画
同样的技术也适用于3D场景中的动画对象。
的
型
使用
AnimationTimer
第三(更复杂)技术(此处未显示),将转换为use an AnimationTimer,每次调用计时器中的
handle
方法更新场景时,计算并调整节点的平移属性。此技术通常用于游戏循环或物理模型中,在物理模型中,使用速度向量对对象进行建模,这些速度向量根据重力、碰撞和反弹。