Posted on 2017/11/22, 11:25 PM By admin22
Processingというと、グラフィックの得意な言語、開発環境ですが、3D空間の描画にも便利です。
ただ2Dの拡張のような3Dであるため、座標の感覚がつかみづらく感じました。そこで空間を把握するため3D座標軸とデータをプロットしてみました。(カメラ使用しない)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
float rotx = 0; float roty = 0; int d1[] = {-1,-3,-5,-7,-3,-4,-8,-4,-5,0};//R int d2[] = {3,6,3,2,5,7,4,2,1,2};//G int d3[] = {4,2,2,4,6,7,5,8,4,3};//B int d4[] = {-5,-2,-3,-4,-7,-5,-6,-1,-3,-2};//Cyan void setup(){ size(600, 600, P3D); } void draw(){ background(240); rotateX(rotx); rotateY(roty); for(int i=0;i<60;i++){ pushMatrix(); translate(i*10, height/2, height/2); noStroke(); fill(255,0,0); sphere(2); popMatrix(); } for(int i=0;i<60;i++){ pushMatrix(); translate(width/2, i*10, height/2); noStroke(); fill(0,255,0); sphere(2); popMatrix(); } for(int i=0;i<60;i++){ pushMatrix(); translate(width/2, width/2, i*10); noStroke(); fill(0,0,255); sphere(2); popMatrix(); } for(int i=0;i<10;i++){ pushMatrix(); translate(width/2 + i*10, height/2 + d1[i]*10, 300 - 100); noStroke(); fill(255, 100, 100, 70); sphere(5); popMatrix(); } for(int i=0;i<10;i++){ pushMatrix(); translate(width/2 + i*10, height/2 + d2[i]*10, 300 - 0); noStroke(); fill(100, 255, 100, 70); sphere(5); popMatrix(); } for(int i=0;i<10;i++){ pushMatrix(); translate(width/2 + i*10, height/2 + d3[i]*10, 300 + 100); noStroke(); fill(100, 100, 255, 70); sphere(5); popMatrix(); } for(int i=0;i<10;i++){ pushMatrix(); translate(width/2 + (-i)*10, height/2 + d4[i]*10, 300 + 180); noStroke(); fill(100, 255, 255, 70); sphere(5); popMatrix(); } } void mouseDragged() { float rate = 0.01; rotx += (mouseY - pmouseY) * rate; roty += (pmouseX - mouseX) * rate; } |
起動直後、Z軸上から眺めています。(X軸:赤、Y軸:緑、Z軸:青)
マウスでドラッグして視点を視点を変えるとクリッピングされていた手前のデータ(Cyan)が現れます。
さらに変えて、奥から手前にどの間隔でデータを並んでいるか確認してみます。(奥行き600)
カメラ位置や、ローテートのポイントを、使う目的に合わせて設定する必要があります。
Z軸回転のrotateZ()をためしてみましたが、ちょっとイメージと違う動きをしていて、なかなか難しいです。
Categories: Graphics タグ: Processing