2017-02-01 46 views
1

我想製作一個程序,在Processing中繪製一個三軸座標系,並將一個點的座標A(x,y,z)作爲輸入並顯示在三軸座標系統,任何人都可以提供我一個代碼,我可以開始?3軸正在處理的座標系3.2.4

回答

1

您可以使用line()函數並傳遞兩對x,y,z座標(3D中線的「from」和「to」點)來輕鬆繪製座標軸。

製圖3行,並用彩色着色各軸(例如X,Y,Z爲R,G,B)應該做的:

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。相同的概念適用於3D以及在隔離和使用pushMatrix()/popMatrix()嵌套調用座標系方面:

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

可以波紋管運行p5.js preview

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