Clolent

 프로세싱은 JAVA를 기반으로 하는 디자인 쪽에서 쓰이는 프로그램이다. 

우선 처음 아주 간단한 원만들기나 점찍기, 선그리기 등을 해보고 느낀점은

유니티에서 했던 C# 코딩이나, 그래픽스에서 배운 오픈젤 코딩보다도 훨씬 직관적이고

이해하기 쉽다는 점이었다.


JAVA 기반이다 보니 기본적인 Random 함수나 if, for 등의 함수를 간단하게 사용할 수 있었고,

width, height, mousePressed 등의 변수가 기본설정이 되어있어서 사용자가 수비게 사용할 수 

있도록 배려를 참 잘해놓은 것 같다. 라는 인상을 받았다.



간단한 Random 함수를 이용해서, 랜덤하게 원과 직사각형이 랜덤한 색으로 생성되게 했다.


수업 시간을 통해서 배운 선, 도형 등을 그리는 함수들을 정리하겠다.


ellipse ( X 좌표, Y 좌표, 가로 지름, 세로 지름 )

원을 그리는 함수로, 정확히는 원이 아니고 타원을 그리는 것도 가능하다. 가로반지름과 세로반지름이 일치하면 원일 것이고, 둘이 다르면 타원의 모양을 이루게 될것이다.


rect ( X 좌표, Y 좌표, 가로 길이, 세로 길이 )

직각사각형을 만드는 함수로, 왼쪽위 꼭지점과, 오른쪽 아래 꼭지점을 준다고 생각해도 무방하다. 마찬가지로 가로길이와 세로길이가 같다면, 정사각형이 될것이다.


point ( X 좌표, Y 좌표 )

해당 좌표에 작은 점을 하나 찍어준다. 끝


line ( X 좌표, Y 좌표, 2번째 X좌표, 2번째 Y좌표 )

선을 그리는 함수로, 첫번째 지점과 두번째 지점을 연결하는 직선을 그려준다.


quad ( X 좌표, Y 좌표, 2번째 X좌표, 2번째 Y좌표, 3번째 X좌표, 3번째 Y좌표, 

            4번째 X좌표, 4번째 Y좌표,  )

사각형을 그려주는 함수로 말그대로 사각형이다, 선 4개를 연결시켜주는데, 각각의 점의 순서는

왼쪽위 부터, 시계방향으로 점을 설정해주는데, 점의 순서를 이상하게 줄경우에는 원하던 모양이 나오지 않을 수 있으므로, 점의 순서를 제대로 넘겨주도록 하자.


triangle ( X 좌표, Y 좌표, 2번째 X좌표, 2번째 Y좌표, 3번째 X좌표, 3번째 Y좌표 )

삼각형을 그리는 함수로, 삼각형 위쪽 꼭지점을 시작으로 시계방향으로 점을 준다. 역시 이상한 순서로 주면 원하던 그림이 나오지 않는다.


arc ( X 좌표, Y 좌표, width, height, start, stop ) 

호를 그리는 함수로, 누군가 몇조각 먹은 피자모양을 생각하면 좋을 것 같다. 혹은 파이라던가.



색을 칠하는 함수로는

fill ( float ) 

fill ( R, G, B ) 

채운다. 색으로 이 함수가 등장한 이후로 나오는 녀석들은 fill 에서 정한 색으로 채워지게 된다.

색을 채우는 함수다 채우는 함수 


stroke ( float )

stroke ( R, G, B ) 

얘는 선을 칠하는 함수로, 이 함수가 등장한 이후로 나오는 녀석들의 테두리는 stroke 에서 설정한 색으로 나오게 된다.


설정 관련 함수로는


void setup( )

유니티 에서, Start 등에 해당하는 함수로, 컴파일 될때 딱 한번 먼저 수행되는 함수이다. 이런 저런 설정들을 넣어서 사용하는 함수이다. 한번 수행된다 한번


void draw ( 

유니티에서 Update 에 해당하는 함수로, 이 함수에 들어있는 코드들은 매 프레임마다 수행된다.

무언가 움직이는 것을 표현하거나, 매 순간순간 랜덤하게 설정해야 할 값 등은 이 안에서 처리한다고 생각 하면 되겠다.


clear ( 

화면을 검은색으로 클리어 시켜버린다. 무조건 검은색인 것 같다.


size ( 가로길이, 세로길이 

컴파일 했을때 나타나는 윈도우 창의 크기를 설정한다. 위의 가로길이와 세로길이는 각각 width와 height로 참조가 가능하다.


랜덤 관련 함수로는


random ( float ) 

random ( float, float )

랜덤한 float 형 숫자 하나를 반환하는 함수로 인자가 하나일 경우 0 ~ 설정 float 중 하나를

인자를 두개 설정할 경우 첫번째 인자 ~ 두번째 인자 사이의 수 중 랜덤한 하나를 반환한다. 

주의할 점은 random ( 5 ) 라고 할경우 5 미만으로 설정되서 5는 나오지 않는다는 점이다.


기본 정의되어 있는 변수들 이 있는데 이들을 잘만 사용하면 굉장히 유용하다.


width  윈도우 창의 가로길이

height  윈도우 창의 세로길이

mousePressed  마우스가 눌렸는지, 안눌렸는지 True/ False 

mouseX  마우스 포인터 위치의 X 좌표

mouseY  마우스 포인터 위치의 X 좌표


==============================================================


예제 코드 1

// 그냥 단순하게 setup 이나 draw 를 선언하지 않고 바로 코딩을 하면 setup에 선언한것 처럼 행동한다.

size ( 800,600) ;   // 가로

float temp = 2 * PI / 31 ;   // temp 라는 변수를 이용, 각도설정

for( int i = 1 ; i < 31 ; i ++ ){    // 30번 반복 

 line(width/2 , height/2 , width/2  + 100*cos( temp * i ) , height/2 + 100 * sin( temp * i ) ) ;   

}    // 선을 그리는데, temp 만큼 돌려가며 하니까 태양을 그리는 것처럼 선이 그려질 것이다.


quad( 158 , 55, 199, 14, 392, 66, 351, 107 ) ;    // 사각형 만들어보기

triangle ( 100, 100,  300, 300, 500, 500 ) ;    // 삼각형 만들어보기 하지만 제대로 나오지 않을 것이다 

왜일까



================================================================

예제 코드 2

int select ;      // random 으로 원이 그려질지, 사각형이 그려질지 선택하기위한 변수

void setup(){      //  설정 선언

  size(640,480);      // 윈도우 창의 크기 설정

}


float num1 , num2, num3 ;      // 임의의 RGB 설정을 위한 변수


void draw(){      //  Update 처럼 매 프레임 수행될 함수다.

  if( mousePressed){      //  만약 클릭이 되었다면

     clear();         // 화면을 밀어버린다. 비워버린다.

  }

  else{        // 마우스가 눌리지 않았다면 랜덤하게 3개의 숫자를 셋팅한다.

    num1 = random(255);

    num2 = random(255);

    num3 = random(255);

    select = (int) random(3) ;      // select 의 값을 0 , 1 , 2 중 임의로 선택한다.

    fill(num1,num2,num3);         // 랜덤하게 설정된 3개의 숫자로 색을 채우겠다 선언

  }

  

  switch(select){  

   case 1 :       // 랜덤한 좌표에 원을 2개 그림

          ellipse(random(640), random(480), 80,80 ) ;

          ellipse(random(640), random(480), 80,80 ) ;

          break;

       case 2 :      // 랜덤한 좌표에 사각형을 2개 그림

       rect(random(640), random(480), 80,80 ) ;

       rect(random(640), random(480), 80,80 ) ;

  }

}



================================================================

예제 코드 3

float num = 0 ; 

float add = 0.2 ;

int select ;

void setup(){

  size(640,480);

}


float num1 , num2, num3 ;


void draw(){

  if( mousePressed){

   fill(100);

    clear();

  }

  else{

    num1 = random(255);

    num2 = random(255);

    num3 = random(255);

    select = (int) random(3) ;

    fill(num1,num2,num3);

  }

  

  switch(select){

   case 1 :         // 위와 동일하지만 원이 생기는 좌표를 마우스의 위치에 따라 생기게 했다.

          ellipse(mouseX, mouseY, 80,80 ) ;

          break;

       case 2 :           // 위와 동일하지만 사각형이 생기는 좌표를 마우스의 위치에 따라 생기게 했다.

       rect(mouseX, mouseY, 80,80 ) ;

  }

}


   // 이 코드를 따라하면, 마우스의 위치에 따라서 원 혹은 사각형이 랜덤하게 랜덤한 색으로 따라서 생길 것

댓글 로드 중…

블로그 정보

Clolent - 커피물조절달인

최근에 게시된 글