2017-02-01 17 views
1

Processingで3軸座標系を描画し、点の座標A(x、y、z)を入力として3軸座標で表示するプログラムを作ってみたいシステムでは、誰でもここから始めることができるコードを私に提供できますか?3軸処理中の座標系3.2.4

答えて

1

line()関数を使用して、2組のx、y、z座標(3Dの線の「始点」および「終点」)を渡すと、簡単に軸を描くことができます。

3線を描画し、色で各軸の着色(例えばX、Y、R、G、BとしてZ)を行う必要があります

void drawAxes(float size){ 
    //X - red 
    stroke(192,0,0); 
    line(0,0,0,size,0,0); 
    //Y - green 
    stroke(0,192,0); 
    line(0,0,0,0,size,0); 
    //Z - blue 
    stroke(0,0,192); 
    line(0,0,0,0,0,size); 
} 

複数の座標系を使用する場合、それは読み取り価値2D transformations tutorial

<iframe width="400" height="400" src="https://alpha.editor.p5js.org/embed/HkQoQTAvl" style="border:none;"></iframe>

:あなたは p5.js preview怒鳴るを実行することができます

PVector a = new PVector(100,50,20); 

void setup(){ 
    size(400,400,P3D); 
    strokeWeight(3); 
} 
void draw(){ 
    background(255); 
    //draw original coordinate system 
    drawAxes(100); 
    //draw from centre and rotate with mouse 
    translate(width * 0.5, height * 0.5, 0); 
    rotateX(map(mouseY,0,height,-PI,PI)); 
    rotateY(map(mouseX,0,width,PI,-PI)); 

    //draw centred coordinate system 
    drawAxes(100); 

    //isolate coordinate system for A point 
    pushMatrix(); 
    translate(a.x,a.y,a.z); 
    //draw translated A point 
    drawAxes(50); 
    popMatrix(); 
} 
void drawAxes(float size){ 
    //X - red 
    stroke(192,0,0); 
    line(0,0,0,size,0,0); 
    //Y - green 
    stroke(0,192,0); 
    line(0,0,0,0,size,0); 
    //Z - blue 
    stroke(0,0,192); 
    line(0,0,0,0,0,size); 
} 

:同じ概念がpushMatrix()/popMatrix()呼び出しを使用して分離し、座標系ネストの観点からだけでなく、3Dに適用されます