如何为使用“while”循环计算坐标的对象制作动画?JavaFX的

How to animate objects whose coordinates are calculated using the "while" loop? javafx

提问人:Darina 提问时间:8/6/2023 更新时间:8/6/2023 访问量:138

问:

我是一名从事数学建模的学生。数学模型(我目前正在研究)的粒子位于圆柱体上。这些粒子的坐标由于彼此之间和表面的相互作用而变化。我需要一步一步地绘制这些粒子的运动。我使用“while”循环来获取每个步骤中粒子的坐标。以下是计算粒子坐标的方法:

public static double[][] Interaction (double[][] newСoordinates, double accuracyEnergy, double accuracyK, double h, int pow, double k, double EnergyOld, double EnergyNew, Group group, Cylinder cylinder, Label labelEnergyValue) {  
        while (k >= accuracyK & EnergyOld > EnergyNew) {
            if (EnergyOld - EnergyNew <= accuracyEnergy) {
                k = k/2;
            }
            EnergyOld = EnergyNew;
            newСoordinates = NewCoordinatesWhenMinimizing(newСoordinates,h,pow,k);
            EnergyNew = TotalSystemEnergy(newСoordinates,h,pow);
            labelEnergyValue.setText(String.valueOf(EnergyNew));
            ParticleMapping(newСoordinates,group,cylinder,Color.BISQUE);
        }
        return newСoordinates;
    }
  
    public static void ParticleMapping(double[][] array, Group group, Cylinder cylinder, Color color) {
        group.getChildren().clear();
        group.getChildren().add(cylinder);
        for (int i = 0; i < (array[0].length); i++) {
            var nub = new Sphere(5);
            nub.setMaterial(new PhongMaterial(color));
            nub.setTranslateX (array[0][i]*80);
            nub.setTranslateY (array[2][i]*80);
            nub.setTranslateZ (array[1][i]*80);
            group.getChildren().add(nub);
        }

粒子映射方法应绘制具有新坐标的粒子。我使用javafx,但我不使用fxml。

我想我应该使用 AnimationTimerTimeline,但我不明白如何。如果您有时间帮助我,我将不胜感激。

Java 数组动画 javafx while-loop

评论

3赞 jewelsea 8/7/2023
使用 AnimationTimer 进行基本物理模拟
1赞 trashgod 8/7/2023
此相关示例管理非相互作用粒子的队列,并引用了烟花模拟。

答: 暂无答案