如何在下面绘制的点的位置获得子像素精度?仅使用整数精度 - 导致观察到的移动点的摆动。
int amount = 300;
float[] x = new float[amount];
float[] y = new float[amount];
float[] z = new float[amount];
void setup() {
size(500, 400, P3D);
stroke(255);
strokeWeight(1);
for(int i = 0; i<amount; i++) {
x[i] = float(random(-150, 150));
y[i] = float(random(-150, 150));
z[i] = float(random(-150, 150));
}
}
void draw() {
background(0);
translate(width/2, height/2);
rotateX(-0.1);
rotateY((frameCount/1000)*1);
for(int i = 0; i<amount; i++) {
point(x[i], y[i]/22, z[i]);
}
}
答案 0 :(得分:-1)
这是与您的其他问题相同的问题。您正在使用整数除法,它会截断小数部分。
这一行:
rotateY((frameCount/1000)*1);
需要这样:
rotateY((frameCount/1000.0)*1);
为了将来参考,通过一些调试很容易发现这些问题。您需要完成您的计划并测试您正在制作的每个假设。换句话说,打印出所有内容。例如:
println(frameCount/1000);
该行会向您展示您的整个问题。