'2009/07/20'에 해당되는 글 1건

  1. 2009.07.20 [2009.7.11] DIP 세미나 - 발표자 최자현, 엄지현, 김지인
발표 챕터

127p   Math 4: Random
133p   Transform 1: Translate, Matrices
137p   Transform 2 : Rotate, Scale
173p   Structure 2: Continuous
181p   Structure 3: Functions

- random(), noise()함수를 이용하여, 무작위한 숫자들을 생성하고, 그것을 그래픽에 응용하는 방법을 다룬다.
- processing의 기본 좌표계(화면의 좌측 상단이 0,0)를 이동하고 회전하는 방법들을 알아본다.
- processing의 특징인 draw() 함수의 개념을 알아본다.
- 함수(function)의 특징과 생성 방법을 알아본다.




Math 4: Random



     -주요 syntax
      random(), randomSeed(), noise(), noiseSeed()





     - random()함수는 두 가지 방법으로 사용이 가능하며, 결과 값으로 실수(float)를 생성한다.
      
       random(high)             ->  0과 high값 사이의 random한 숫자를 생성(high값은 포함하지 않음)
       random(low, high)      ->  low와 high값 사이의 random한 숫자를 생성(high값은 포함하지 않음)
     
     - randomSeed()함수를 사용하면 randomSeed에 사용한 값이 같은 경우 동일한 random 숫자를 얻을 수 있다. 
       *random()함수는 기본적으로 매번 실행할 때마다 다른 숫자를 생성한다.

     - noise()함수는 파라미터 값을 입력하고 그 값을 증가시켜주는 값에 따라 생성되는 값의 패턴이 변한다.
       증가되는 값이 작을 수록 이전에 생성된 값과의 차이가 적은 특징이 있다.

     - noiseSeed()함수는 randomSeed()함수와 동일한 역할을 한다.
   


    - 중요 pages
       127-128p : random()함수 사용법
       129p : randomSeed()함수 설명
       130-131p : noise(), noiseSeed() 함수 설명, noise()를 이용한 2d texture(안개이미지)생성하기






Transform 1: Translate, Matrices



     -주요 syntax
      translate(), pushMatrix(), popMatrix()


     - translate()함수를 사용하면 실행 화면 상의 원점(좌측 상단)을 원하는 위치에 옮길 수 있다.
   
     - translate()함수는 연속하여 사용할 경우 누적되어 적용된다.
   
     - pushMatrix()와 popMatrix()를 사용하면 코드 상에서 translate()함수가 적용되는 범위를 설정할 수 있다.
      


     - 중요 pages
       133p : translate()함수 사용법
       134p : pushMatrix(), popMatrix()함수 설명
       135p : pushMatrix()와 popMatrix()의 개념을 이해할 수 있는 예제






Transform 2 :
Rotate, Scale


     -주요 syntax
      rotate(), scale()

    

     - rotate()함수를 사용하면, (0,0)을 기준으로 화면을 회전 시킬 수 있다.
       *rotate()함수는 parameter값으로 degree가 아닌 radian값을 사용한다.
   
     - scale()함수를 사용하면 x,y축 좌표계의 크기를 확대시킬 수 있다.
   
     - rotate(), scale()함수는 화면상에 표시된 그래픽을 회전시키거나 확대시키는 것이 아니라
       화면의 좌표계 자체를 회전시키고, 확대시킨다는 점에 유의한다.


     - 중요 pages
       137p : rotate()함수 사용법 및 개념 설명
       138p : scate()함수 설명
       139p : 앞서 배웠던 transform()함수와 조합하여 좌표계를 다양하게 변형하는 방법 설명





Structure 2: Continuous

     -주요 syntax
      draw(), frameRate(), frameCount, setup(), noLoop()



     - draw()함수는 processing 프로그램의 가장 큰 특징인 함수로 매 frame마다 반복 실행이 된다.

     - frame속도는 변경이 없을시, 기본적으로 60fps으로 설정되어 있고, frameRate()함수로 변경이 가능하다.
       *여기서 설정되는 frame속도는 최대값을 설정해 주는 것으로 컴퓨터의 사양과 코딩에 따라 속도가 느려질 수 있다.
   
     - draw()함수가 사용되더라도, noLoop()함수를 사용하면 반복 실행을 멈추 수 있다.
   
     - 일반적인 processing 코딩의 기본 구조는 아래와 같다.

         

          int y = 0;                   // 전역 변수 선언
        
          void setup() {           // setup() 함수 안에 기본적인 설정값 설정
             size(300, 300);     // setup() 함수는 프로그램 실행시 맨처음 한 번만 실행된다.
          }

          void draw() {            // draw() 함수 안에 실행될 내용을 넣으며, draw()함수는 매 frame마다 실행된다.
             line(0, y, 300, y);  
             y = y + 4;
          }

 
     - 변수가 선언되면 그 변수의 적용 범위는 변수가 선언된 괄호를 경계로 한다.
     
예외로 setup()함수 위쪽에 선언된 변수는 프로그램 전체에서 사용될 수 있다.


     - 중요 pages
       173p : draw()함수의 특징 설명
       175p : draw()함수의 특징을 사용한 예제들
       176p : processing 코딩의 기본적인 형태
       178-180p : 변수의 적용 범위에 대한 설명과 관련 예제들





Structure 3:
Functions



     -주요 syntax
      void, return



     - processing에 기본적으로 내장되어 있는 line(), rect()등 이외에도 사용자가 직접 자신만의 function(함수)를
       만들어 쓸 수 있다.

     - return될 값이 없는 함수를 만드는 경우아래와 같은 구조를 갖는다.
       *눈(eye)모양을 그리는 함수 만들기

       void eye(int x, int y) {                       // return값이 없는 함수는 함수의 이름 앞에 void를 써준다.
                 fill(255);
                 ellipse(x, y, 60, 60);
                 fill(0);
                 ellipse(x+10, y, 30, 30);
                 fill(255);
                 ellipse(x+16, y-5, 6, 6);
       }


       * 적용 예
 
       void setup() {
                 size(100, 100);
                 noStroke();
                 smooth();
                 noLoop();
       }

       void draw() {
                 eye(65, 44);
                eye(20, 50);
       }

 

       void eye(int x, int y) {                     // 함수를 선언하는 위치는 draw()함수 밑이나 위, 둘 중 아무곳이나 가능
                 fill(255);
                 ellipse(x, y, 60, 60);
                 fill(0);
                 ellipse(x+10, y, 30, 30);
                 fill(255);
                 ellipse(x+16, y-5, 6, 6);
       }

    

   
     - 함수의 parameter의 갯수, 종류에 따라 같은 이름의 함수도 다르게 사용될 수 있다.
   
     - return 값이 있는 함수는 함수 선언시 return되는 값의 type을 명시해 주어야 한다.
       return 값이 있는 함수의 예는 아래와 같다.
      *입력된 두 parameter의 평균값을 구하는 average()함수를 만든 예

       void setup() {
             size(100, 100);
             float f = average(12.0, 6.0); // Assign 9.0 to f
             println(f);
       }
   
      float average(float num1, float num2) {             //  두 parameter의 평균값을 실수값의 형태로 return하기 때문에
            float av = (num1 + num2) / 2.0;                    // 함수의 이름 앞에 float 이라고 써준다.
            return av;                                                      // return을 할 계산된 결과 값
       }
 
    

     - 중요 pages
       181-182p : 함수의 개념에 대한 설명
       183p : 간단한 함수를 만들어 보는 예제
       188p : parameter를 사용하여, 함수를 좀 더 다양하게 사용할 수 있는 방법
       193p : parameter의 종류, 갯수에 따라 같은 이름의 함수도 다르게 사용될 수 있다.
       194p : return값이 있는 함수의 예








Posted by 알 수 없는 사용자