2016-03-25 19 views
0

下にプロットされたポイントの位置にサブピクセル精度を得る方法を教えてください。整数精度のみが使用され、移動ポイントの観測されたウォブルが発生します。サブピクセル精度で回転/ポイント

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

これはあなたの他の質問と同じ問題です。小数部分を切り捨てる整数除算を使用しています。

このライン:

rotateY((frameCount/1000)*1); 

ニーズこのすべき:今後の参考のために

rotateY((frameCount/1000.0)*1); 

、これらのような問題は、簡単にいくつかのデバッグによって発見されています。あなたはあなたのプログラムを通って、あなたが作っているすべての仮定をテストする必要があります。言い換えれば、はすべてを印刷します。例:

println(frameCount/1000); 

この行はあなたの問題全体を示しています。

+0

ありがとうございましたが、その変更は目に見える改善を全くもたらしませんでした。 – ChrisJJ

+0

@ChrisJJええ、あなたは本当ですか?その変更を使用してコードを実行すると、私にとって完璧に機能します。 –

+0

@ChrisJJもう1つ必要な変更があります。 'random(-150,150);を使用する行は' random() 'から返された値が既に' float'であるため私のためにコンパイルされないので、 'float()'に渡します。関数が有効ではありません。これらの行に 'float()'の部分を使わず 'random(-150,150);を使うようにしてください。 –

関連する問題