以子像素精度旋转/点

时间:2016-03-25 02:34:17

标签: processing

如何在下面绘制的点的位置获得子像素精度?仅使用整数精度 - 导致观察到的移动点的摆动。

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]);
  }
}

1 个答案:

答案 0 :(得分:-1)

这是与您的其他问题相同的问题。您正在使用整数除法,它会截断小数部分。

这一行:

rotateY((frameCount/1000)*1);

需要这样:

rotateY((frameCount/1000.0)*1);

为了将来参考,通过一些调试很容易发现这些问题。您需要完成您的计划并测试您正在制作的每个假设。换句话说,打印出所有内容。例如:

println(frameCount/1000);

该行会向您展示您的整个问题。