0
Imリアルタイムでグラフをプロットして、発射体の軌跡の図を作成し、それが大気中をどのように動くかをシミュレートします。しかし、私がこれをしようとすると、何もグラフにプロットされますが、エラーはスローされません。javafxリアルタイムでグラフをプロットする方法
String seriesName = " ";
fireButton.setOnAction(e -> {
double initialVelValue = initialVelSlider.getValue();
double angleValue = angleSlider.getValue();
double gravityValue = gravitySlider.getValue();
// Define series
XYChart.Series series = new XYChart.Series();
series.setName(seriesName); // Title of the series
graph.setLegendVisible(false);
long startTime = System.nanoTime();
new AnimationTimer() {
@Override
public void handle(long now) {
double elapsedTime = (now - startTime)/1000000000d;
updateGraph(graph, initialVelValue, angleValue, gravityValue, 0,
projectileCalculations.getTotalDisplacement(initialVelValue, angleValue, gravityValue),
" ", elapsedTime);
System.out.println(elapsedTime);
if(elapsedTime > projectileCalculations.getTotalTime(initialVelValue, angleValue, gravityValue)) {
this.stop();
}
}
}.start();
public void updateGraph(LineChart chart, double initialVel, double angle, double gravity, double start, double stop, String seriesName, double elapsedTime){
double step = (stop-start)/100; // Divide the visible area into 1000 parts
int vMax = 0;
double vDisplacement = projectileCalculations.getVDisplacement(initialVel, angle, gravity, elapsedTime);
double hDisplacement = projectileCalculations.getHDisplacement(initialVel, angle, elapsedTime);
vMax = (int) (vDisplacement > vMax ? Math.ceil(vDisplacement) : vMax);
XYChart.Series series;
boolean newChart = false;
if (chart.getData().size() > 0) {
newChart = true;
series = (XYChart.Series) chart.getData().get(0);
} else {
series = new Series();
}
series.getData().clear();
series.getData().add(new XYChart.Data(hDisplacement, vDisplacement));
((NumberAxis) chart.getYAxis()).setAutoRanging(false); // Alow manual choosing of range
((NumberAxis) chart.getYAxis()).setLowerBound(0); // Set start and stop of axis
((NumberAxis) chart.getYAxis()).setUpperBound(vMax);
if (newChart) {
chart.getData().add(series); // Add data series to line chart
}
}
これは意味があります、あなたの答えに感謝します! –
しかし、あなたの提案を追加した後、 "duplicate series added ..."というエラーが表示されるようになりました。 –
updateGraphの外部にシリーズを追加するには、updateGraphメソッド内で現在のシリーズを選択してデータを追加します。 – minus