gpt4 book ai didi

java - 实时绘制图表,随着时间的推移向后移动点

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:05 24 4
gpt4 key购买 nike

Processing 是一个使用 Java 的环境。我正在尝试使用蒙特卡罗方法来计算 Pi 的值。

处理时使用坐标系,其中左上角为原点,向右为正 x 轴,向下为正 y 轴。

我制作了一个图表,绘制了 pi 的计算值,使用 x坐标 = x坐标 + 1 作为计算中使用的随机数数量(在飞镖类比中也称为飞镖)。然而,由于水平空间有限,随着随机数数量的增加,使用 x坐标 = x坐标 + 1 来绘制图形已被证明是一种非常有限的方法,因为点会漂移到屏幕之外的点。如何制作图表,使最新值始终添加到常量 x坐标,而先前的值随着随机点数量的增加而向后移动?

我当前的代码是:

float inCircle = 0;
float inSquare = 0;
float xCoordinate = 600;

void setup() {
size(1200, 600);
background(50);
frameRate(50);
line(0, 360, 360, 360);
line(360, 0, 360, 360);
}

void draw() {
// inCircle and inSquare are updated
// ...

if (inSquare == 0.0) {
print("Calculating...");
} else {
println(inCircle / inSquare);
line(600, 300, 1200, 300); // x = 3.14
line(600, 345, 1200, 345); // x = 3
line(600, 25, 1200, 25); // x = 4

// Draw Pi estimate (y-axis) at xCoordinate
ellipse(xCoordinate, 300-(320*((inCircle / inSquare)-3.14159265)), 1, 1);

xCoordinate = xCoordinate + 1;
}
}

任何帮助将不胜感激,提前致谢。

最佳答案

不要每帧只绘制一个点,而是将这些点存储在数据结构(如ArrayList)中,并在每帧重新绘制整个图形。当点从窗口左侧“掉落”时,只需将它们从数据结构中删除即可。

您还可以尝试绘制到 PGraphics 缓冲区,而不是直接绘制到屏幕,然后偏移缓冲区,但最终会遇到同样的问题。因此,只需将您的点存储在 ArrayList 中,然后只绘制您想要的点。

关于java - 实时绘制图表,随着时间的推移向后移动点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42131552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com