본문 바로가기
아두이노_프로세싱/프로세싱

프로세싱 좌표변환

by 돌돌쌤 2012. 8. 4.

프로세싱 좌표변환


좌표변환 함수를 이용하여 도형의 좌표, 크기, 회전등을

표현해보자.


스케치 소스

----------------------------------------------------------------------------

void setup(){

  size(480,360);

  background(255);

}


void draw(){

  fill(255);

  rect(0, 0, 100, 100);   // 흰색 사각형을 (0,0)에 100x100크기로 그림  --(1)

  translate(30, 20);      // 기준좌표(왼쪽 맨위)를 (30,20)으로 이동

  rect(0, 0, 100, 100);   // 결국 사각형을 (30,20)에 100x100크기로 그림  --(2)

  translate(50,50);       // 기준좌표를 (50,50)으로 이동

                                // 누적 이동되어 기준좌표는 (0,0)에서 부터 (80,70)으로 이동됨

  rect(0,0,100,100);      // 결국 사각형을 (80,70)에 100x100크기로 그림 --(3)

  translate(-80,-70);    // 기준좌표를 (0,0)으로 원위치

  

  pushMatrix();            //pushMatrix(); 와 popMatrix();  사이에서

                                // translate(); rotate(); scale();가 적용됨

  translate(30, 20); 

  fill(0);  

  rect(0, 0, 50, 50);       // --(4)

  popMatrix(); 


  fill(102);  

  rect(15, 10, 50, 50);   // 위에서 쓰인translate();는 pushMatrix(); 와 popMatrix(); 사이에서

                                // 제한 되므로 사각형은 그대로 (15,10)좌표에서 그려짐.  --(5)

  

  translate(width/2, height/2);   //기준좌표를 창의 중앙점으로 옮김

  rect(-26, -26, 52, 52);     //  --(6)

  fill(255);

  rotate(PI/6.0);      // 좌료를 시계방향으로 30도 회전

  line(0,0,0,180);     // 좌표가 회전으로 수직선이 아닌 사선이 그려짐   --(7)

  line(0,0,240,0);     // 좌표가 회전으로 수평선이 아닌 사선이 그려짐   --(8)

  rect(-26, -26, 52, 52);    // 시계방향으로 30도 회전된 사각형    --(9)

  

  scale(0.5);    // 좌표를 가로세로 0.5축소됨

  rect(200, 200, 50, 50);   // 옮겨진 기준좌표(중점)에서    --(10)

                                   //(200,200)이 아닌 (100,100)위치에 그려짐(좌표 회전됨 유지)

  scale(0.5,0.7);     // 좌표가 가로0.5 세로 0.7 축소됨 

                           //결국 누적되어 가로 0.25 세로 0.35축소됨

  rect(200, 200, 50, 50);  // --(11)

}

--------------------------------------------------------------------------------------


화면


프로세싱 레퍼런스 http://processing.org/reference/


Transform 

applyMatrix()
popMatrix()
printMatrix()
pushMatrix()
resetMatrix()
rotate()
rotateX()
rotateY()
rotateZ()
scale()
shearX()
shearY()
translate()