JavaFX:折线缩放/缩放

时间:2019-12-12 19:24:17

标签: java javafx

这是为了做作业。

我们必须创建一个符合MVP原理的JavaFX应用程序,该应用程序显示一个静态正弦波,并使用滑块控制所述正弦波的属性。

这些滑块是幅度,频率,相位和缩放。通过演示者,它们被绑定到构成正弦波的模型中的属性。然后,这些人员将具有侦听器以根据更改来更新模型。

为绘制正弦波,我选择了一条折线,并计算了模型中可观察到的每个点的X和Y坐标:

for (double x = -360; x < 360; x++) {
    data.add(x);
    data.add(Math.sin(frequency.doubleValue() * x + phase.doubleValue()) * amplitude.doubleValue());
}

然后,我通过演示者到达此数据集并进入我的视图,在这里我将每个点都指定给折线:

public void setPoints(ObservableList<Double> list) {
        functionLine.getPoints().clear();
        functionLine.getPoints().addAll(list);
        double temp;
        for(int i = 0;i<functionLine.getPoints().size();i++) {
            //separate x from y coordinates   
            if (i % 2 == 0) {                                          
                temp = functionLine.getPoints().get(i);
                functionLine.getPoints().set(i, temp + (display.getWidth() / 2)); // + displaywidth/2 to get it to the center of the graph
            } else {
                temp = functionLine.getPoints().get(i);
                functionLine.getPoints().set(i, temp + ((display.getHeight() / 2))); //same as above
            }
        }
    }

由于for循环和接口比较滞后,这也表现不佳,但这不是我在这里的原因。 这是当前的样子。折线和图形(两条线)位于其自己的窗格中:

enter image description here

现在,我已经尝试在不增加实际线条宽度的情况下对此进行缩放,但是我不知道如何在图形中心周围正确缩放。显然,我必须变换每个点的坐标,但是我不知道如何。我已经尝试了几件事,但是没有达到我想要的。

感觉自己应该可以自己做一些事情,但显然我做不到。

任何帮助将不胜感激。

0 个答案:

没有答案
相关问题