Processing 홈페이지에 가보시면 Library 페이지에 face detect library가 있지만 PC전용 library이기 때문에 mac에서는

사용할 수 가 없습니다

다행히 아래의 링크로 가시면 mac용 library를 구할 수가 있는데요,

사이트에 설명이 잘 되어 있지만, 그래도 아직 익숙하지 않은 분들을 위해서

 이 library의 설치 및 사용방법에 대해서 알아보겠습니다.

(원래 이 사이트도 processing 홈페이지에 link가 되어 있었는데, 언제부턴가 없어졌더군요)

 http://tokage.cafe24.com/facedetect/index.htm



1. 위에 링크된 사이트로 가보시면 설치 방법이 쓰여 있는데,
    Face detect library를 설치하기 전에 먼저 openCV Framework를 설치하라고 되어 있습니다.
    openCV는 Open Source Computer Vision 의 약자로 실시간으로 computer영상을 처리할 수 있게 해주는
    library라고 보시면 될 것 같습니다.
   
    아래 화면에 보시면  openCV사이트 링크가 있습니다.
   

  
   위의 링크를 따라 가면  openCV 페이지 아래쪽 링크에서 OpenCV-Private-Framework-1.1.dmg을 다운 받을 수
   있습니다.(아래 사진에서 빨갛게 표시된 부분)
   




2. 파일을 받아서 열면 아래 그림처럼 폴더가 들어 있는데 openCV.framework 폴더만
    ~/System/Library/Frameworks 폴더로 옮깁니다.

   


   



3. 이제 Face Detect library를 다운 받습니다.
   

   
    library를 다운 받아 열어보면 두 개의 폴더가 있는데, FaceDetect 폴더는 processing의 library폴더에 넣어주시고,
    data폴더는 그 안에 있는 파일들을 이 library를 사용해 작업할 sketch 폴더의 data 폴더에 넣어주세요.
   




4. 이제 설치는 다되었으니 Face Detect 사이트에 링크 되어 있는 예제 파일을 실행에 봅니다.
   

    두 개의 예제 중 face_example.pde(processing video library)를 클릭하면 소스 코드가 나오는데, 그것을 카피하여
    processing 창에 가져다 붙여보세요.
     *여기서 주의할 점은 3번에서 설명했던 것처럼 현재 sketch 폴더의 data폴더에, 다운 받은 library 파일에 들어있는
      data폴더의 파일들을 반드시 옮겨 주어야 합니다.

    실행하기 전에 code에서 size(320,240,P3D)의 P3D를 지워주세요. 그래야 실제 캠화면이 나옵니다.

    실행하게 되면 아래의 그림처럼 나오게 됩니다. 즉, 얼굴을 인식해서 얼굴위에 원을 그리는 코드 입니다.
    (아래 실행화면의 경우 fill 값을 준 것입니다.)
   
   




5. 예제 코드에서 중요한 부분만 간단히 설명하면 아래와 같습니다.



import processing.video.*;     //   video library와 FaceDetect library를 불러옵니다.
import FaceDetect.*;

FaceDetect fd;                     //   FaceDetect data type인 fd 와 카메라로 캡쳐된 것을 저장하는 Capture data type인 cam
Capture cam;

int MAX = 10;                       //   최대 10개까지 화면 안의 얼굴을 인식합니다.

int[] x = new int[MAX];
int[] y = new int[MAX];
int[] r = new int[MAX];
int[][] Faces = new int[MAX][3];    // 인식된 얼굴의 갯수와 얼굴의 화면상의 위치, 크기를 저장할 int type의 array

void setup(){

  size(320,240);
  cam = new Capture(this, 320, 240);
  fd = new FaceDetect(this);
  fd.start("haarcascade_frontalface_alt.xml", width,height,30);
  stroke(255,200,0);
  fill(255,200,0);
  //noFill();
}


void draw(){
  if (cam.available()) {
    cam.read();
    image(cam,0,0);

    Faces = fd.face(cam);              
    int count = Faces.length;      // 화면 상에서 인식된 얼굴의 갯수   
    //    println(count);
    if (count>0) {
      for (int i = 0;i<count;i++) {
        x[i] = Faces[i][0];            // 얼굴 중심의 x좌표
        y[i] = Faces[i][1];            // 얼굴 중심의 y좌표
        r[i] = Faces[i][2] * 2;       //  얼굴의 크기
        ellipse(x[i],y[i],r[i],r[i]);    //  위의 데이터를 이용하여 얼굴 위에 원을 그림
      }
    }
  }
}


사실상 중요한 부분은 빨갛게 표시된 부분입니다.
얼굴의 화면 상에서의 좌표값과 크기값을 넘겨주는 부분으로
이 데이터를 이용하여 뭔가 재밌는 것을 해보면 되겠지요^^



신고
Posted by IamFLATLINE

댓글을 달아 주세요




지난 시간에 설명했던 processing에서 library 사용하는 방법을 정리한 것입니다.

library는 processing을 좀 더 다양한 방법으로 활용할 수 있도록 도와 줍니다.

기본적으로 processing을 다운 받아서 설치하게 되면 이미 video와 sound 등 몇가지 library가 들어있지만,

processing 홈페이지의 library 페이지(http://processing.org/reference/libraries/)를 가보면 사용자들이

직접 만들어 올려 놓은 다양한 library들을 다운 받을 수 있습니다.



library는 우리가 어떤 특정한 기능을 필요로 할 때, 직접 그것을 만들 필요 없이 활용할 수 있는 함수들과

클래스를 제공합니다. 만약 화면에서 얼굴만 캡쳐하는, face detect 같은 기능이 필요할 때

이것을 우리가 직접 만드는 것은 많은 노력과 시간을 필요로 하겠지요. 하지만, 제가 다운 받은 face detect library는

간단한 사용법만 익히면, 화면상에서 얼굴 중심값의 x,y좌표를 계산해 줍니다. 전 이 좌표를 이용해서 제가 원하는

작업을 하기만 하면 됩니다.




processing에서 library를 사용하기 위해선 사용하려는 library를 불러와야 합니다.

직접 코드를 쳐도 되지만, 간단히 아래 그림처럼 import library에서 필요한 library를 선택하면 됩니다.

붉게 표시된 부분은 외부  library를 다운 받은 것이고 아래 파란색으로 표시된 부분은 processing에

내장되어 있는 library들 입니다.
    




위의 메뉴에서  library 를 선택하게 되면 아래와 같이 library가 불려집니다.(아래의 예는 video library)

 




각 library의 예는 processing 홈페이지의 예제를 참고해 주시거나, processing 메뉴에 들어 있는 예제들을 참고해 주세요.
이외에 따로 다운 받은 library들은 해당 홈페이지에 사용방법과 예제들이 잘 나와 있습니다.

 







다운로드 받은 library를 설치하는 방법은 아래 게시물을 참고해 주세요

[Processing] 최신버전들의 library 설치 방법





windows 기반의 pc에서 processing으로 webcam을 사용하려면 JMyron이란 library가 필요합니다.
아래 게시물을 참고해 주세요.

[Processing] JMyron 라이브러리 활용 - Motion detection / Color tracking






화면상에서 밝은 부분이나 어두운 분을 detect하는 Blob detection library 설치 및 활용방법을 설명한 게시물 입니다.

[Processing] Blob detection library 설치 및 그림자/카메라와 활용


신고
Posted by IamFLATLINE

댓글을 달아 주세요


발표 챕터

197p   Shape 3: Parameters, Recursion
205p   Input 1: Mouse 1
217p   Drawing 1 : Static Forms
223p   Input 2: Keyboard
229p   Input 3: Events



- 이전 챕터의 function(함수)을 이용한 form을 만들어 본다
- Mouse와 keyboard로 입력을 받아서 활용하는 방법을 알아본다.



Shape 3: Parameters, Recursion




     - Parameter 값을 받는 function을 사용하면, parameter 값에 따라 다양한 모양을 같는 form을 만들 수 있다.

     - Function을 만들 때, 자신의 블록 안에 다시 자기 자신을 사용하여 반복적인 형태나 패턴을 만드는 방법을
       recursion이라 한다.

     - Recursive function에 random(), randomSeed()함수를 사용하면, 불규칙 적인 형태를 만들 수 있다.


     - 중요 pages
       199-200p : Parameter값을 받는 함수를 사용하여 만든 form들에 대한 예제
       201p : Recursion 개념을 사용한 function의 구조 설명
       203-204p : Recursive function에 random()함수를 사용한 예제




Input 1:
Mouse 1


     -주요 syntax
      mouseX, mouseY, pmouseX, pmouseY, mousePressed, mouseButton
      cursor(), noCursor()



     - mouseX, mouseY는 현재 실행 화면에 위치한 마우스 포인터의 x,y 좌표값을 읽어온다.

     - 마우스 좌표값을 이용하면 화면상에서 마우스에 따른 그래픽의 움직임을 만들어 낼 수 있고,
       다양한 수치를 적용하여, 움직임에 변화를 줄 수 있다.
     
     - mousePressed 는 현재 마우스 버튼이 눌러져 있는 상태인지 체크 한다.
       mouseButton은 가장 최근에 눌린 마우스 버튼(LEFT, CENTER, RIGHT)을 알 수 있다.

     - noCursor() 를 사용하면, 실행화면에서 마우스 포인터를 안보이게 할 수 있다.
       cursor()함수에 ARROW, CROSS, HAND, MOVE,TEXT, WAIT 과 같은 parameter를 사용하면
       마우스 포인터 모양을 바꿀 수 있다.



     - 중요 pages
       206-211p : 마우스 좌표값을 이용한 다양한 예제들.
       212-213p : 마우스 버튼을 이용한 예제들
      



Drawing 1 : Static Forms



     - 앞 챕터에서 배운 마우스 관련 코드들을 사용하면 간단한 drawing 프로그램을 짤 수 있다.

     - 마우스의 좌표값과 도형을 그리는 함수들을 응용하면, 여러가지 브러쉬 효과가 가능하다.

     - 도형이나 점 대신, image 파일을 불러와서 브러쉬처럼 쓸 수 있다.



     - 중요 pages
       218-220p : 점이나 도형들을 사용한 drawing 프로그램 예제
       221p : image 파일을 브러쉬로 사용하는 예제.





Input 2: Keyboard

     -주요 syntax
      keyPressed, key, keyCode



     - keyPressed는 키보드의 자판 눌린것을 확인하는 boolean 변수 이다.
       자판이 눌렸으면 true, 아니면 false값을 갖는다.

     - key는 특정한 가장 최근에 눌린 key가 저장이된는 char 변수 이다. key에 저장된 글자를 확인하려면
       작은 따옴표를 써야한다. (큰 따옴표를 사용하면 에러 발생)

     - Coded key는 특별한 용도가 미리 정해진 특수키들을 말하는데, alt, enter, return, 화살표키등이 이에 해당한다.
       key == CODED if문에 사용하면  coded key인지 확인할 수 있으며, keyCode를 통해 어떤 특수키가
       눌려졌는지 알 수 있다.




     - 중요 pages
       224-226p : key와 keyPressed를 사용한 예제들
       227p : coded key(화살표키, delete,enter,ctrl,alt,enter등)들을 사용한 예제들.





Input 3: Events



     -주요 syntax
      mousePressed(), mouseReleased(), mouseMoved(), mouseDragged()
      keyPressed(), keyReleased()
      loop(), redraw()





     - mousePressed(), mouseReleased(), mouseMoved(), mouseDragged() 를 사용하면, 각각 마우스가 눌렸을때,
       마우스 버튼을 놓을때, 마우스가 움직일때, 마우스가 드래그 될때, 우리가 원하는 동작을 하는 함수를 만들 수 있다.

     -
keyPressed(), keyReleased() 역시 키가 눌렸을대, 눌려진 키가 놓아질 때에 반응하는 함수를 만들 수 있다.

     - noLoop()함수를 쓰면 draw()함수가 한 번만 실행되며, loop()함수를 쓰면 draw()함수가 다시 반복해서 실행되게 된다
       redraw()함수를 쓰면, redraw()를 쓸 때마다 draw()함수가 한 번씩 반복된다.

     


     - 중요 pages
       230-231p : mouse event를 사용한 예제들
      232-235p : key event를 사용한 예제들
       235-236p : loop(), redraw()함수를 사용하여 프로그램의 흐름을 제어하는 예제
신고
Posted by IamFLATLINE

댓글을 달아 주세요

발표 챕터

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 IamFLATLINE

댓글을 달아 주세요

발표 챕터

95p     Image 1: Display, Tint
101p   Data 2: Text
105p   Data 3: Conversion, Objects
111p    Typography 1: Display
117p   Math 3: Trigonometry


- Image 파일을 불러와서 processing의 실행 창에 보이도록 하는 여러가지 테크닉 설명
- char, String 타입의 변수를 이용하여, 낱글자나 단어, 문장등을 사용하는 방법
- 서로 다른 타입의 데이터를 변환하는 방법
- 컴퓨터에 저장된 폰트를 불러와서 텍스트에 적용하기
- procssing에 내장된 삼각함수 관련 함수들








Image 1: Display, Tint


     -주요 syntax
      PImage, loadImage(), image()
      tint(), noTint()



     - processing은 기본적으로 GIF, PNG, JPG 타입의 이미지 파일을 지원한다.
     
     - 이미지 파일을 사용하기 위해선 먼저 사용하려는 이미지 파일을 현재 스케치 폴더 내의 data폴더에 반드시 저장해야 한다.
       기본적으로 procssing을 설치하면 Window의 경우 내문서 폴더에 processing 폴더가 생기고 그 안에 모든 스케치들이
       저장되며, Mac역시 Document 폴더에 위와 동일한 폴더가 생성된다.
       
       이미지를 data폴더에 저장하는 방법은 아래 세가지와 같다.
          
               * 이미지 파일을 드래그 하여 processing에 끌어다 놓는다
              
              
               * Sketch 메뉴에서 Add File을 클릭한 후 해당 파일을 선택한다.
                     
          
         
              * Sketch 메뉴에서 Show Sketch Folder를 선택한 후, data 폴더에 해당 파일을 가져다 놓는다.
                    
    





     - Pimage는 이미지를 데이타로 받는 데이타 타입이며, loadImage는 data폴더에 저장된 이미지를 사용할 수 있도록 불러오는
       기능을 한다. image()함수로 이렇게 불러온 이미지를 화면에 표시할 수 있다.
  
     - tint() 함수는 이미지에 지정한 색상을 입히거나, 투명도를 조절할 수 있다.




    - 중요 pages
       96p : GIF, PNG, JPG 파일의 차이 설명
       96-97p : 이미지를 화면에 불러오는 방법
       98p : tint()함수를 사용하면 색상 및 투명도 조절이 가능





Data 2: Text

     -주요 syntax
      char, String



     - char(character의 줄임말)는 낱글자를 저장할 수 있는 데이타 타입이다.
       데이타를 char 타입의 변수에 저장할 때는 반드시 작은 따옴표를 사용한다.
       ex)
       char a = 'n';

     - String은 단어나 문장을 저장할 수 있는 데이타 타입이다.
       데이타를 String 타입의 변수에 저장할 때는 반드시 큰 따옴표를 사용한다.
       ex)
       String a = "Eponymous";
       String c = "E";


    - 중요 pages
       102p : char 타입 설명 및 ASCII 코드 설명
       103p : String 타입 설명
   




Data 3:
Conversion, Objects



     -주요 syntax
      boolean(), byte(), char(), int(), float(), str()
      “.” (dot operator)
      PImage.width, PImage.height
      String.length(), String.startsWidth(), String.endsWidth(),
      String.charAt(), String.toCharArray(), String.subString(),
      String.toLowerCase(), String.toUpperCase()
      String.equals()



     - 다른 타입의 데이타를 사용하기 위해선 데이타의 변환이 필요하다.
       
boolean(), byte(), char(), int(), float(), str() 은 각각의 데이타 타입으로 괄호안의 데이타를 변환한다.

     - PImage나 PFont, String의 경우 다른 데이타 타입과 다르게 object 개념을 갖는다.
       Object 안의 변수를 procssing에선 filed라고 하며, Object 안의 함수를 method라 한다.
       field와 method는 ". (dot operator)" 를 이용하여 사용할 수 있다.
      
       ex) 
"ohio.jpg"가 320 x 240 pixel의 이미지라고 가정
    
             PImage img = loadImage("ohio.jpg");  //  320 x 240 pixel의 이미지
             int w = img.width; //
"ohio.jpg"의 너비를 w에 저장
             int h = img.height; // "ohio.jpg"의 높이를 h에 저장
             println(w); // Prints "320"
             println(h); // Prints "240"

      

    - 중요 pages
       106p : 데이타간 변환을 보여주는 예시문
       107p : Object에 대한 간단한 설명 및 데이터 접근 방법
       108p : String 타입에 사용되는 method소개 및 사용방법 

  
 




Typography 1: Display



     -주요 syntax
     PFont, loadFont(), textFont(), text()
     textSize(), textLeading(), textAlign(), textWidth()


 

     - processing에선 컴퓨터에 저장된 font를 사용할 수 있으며 사용방법은 아래와 같다.

     

      Tools 메뉴에서 Creat Font 선택
  
    
     

      사용하려는 font와 사이즈를 결정한다.
       이렇게 지정된 font는 현재 sketch의 data폴더에 저장되며, 여러개의 font를 불러오는 것도 가능하다.



     - 이렇게 저장된  font를 loadFont()로 불러온뒤, textFont()로 loadFont()로 불러온 font중 실제 text()에 적용될
       font를 선택한다. 그 후 text()함수로 원하는 단어나 문장을 화면에 표시할 수 있다.

       ex)
     
           PFont font; // PFont 타입의 변수인 font를 선언
           font = loadFont("SansSerif-32.vlw"); // 저장된 폰트를 불러온다.
           textFont(font); // 사용할 폰트를 지정한다.
           fill(0);
           text("SADI", 0, 40); // (0,40) 에 "SADI" 표시
           text("DIP", 0, 70); //
(0,70) 에 "DIP" 표시
           text("2009", 0, 100); // (0,100) 에 "2009" 표시
        
        


    
      - textSize(), textLeading(), textAlign() 는 각각, text의 크기, 줄간격, 정렬방법을 설정할 수 있으며,
       
textWidth()는 표시된 텍스트의 너비 값을 알 수 있다.

    - 중요 pages
       112p : font를 불러오는 방법을 설명
       114p : text 사이즈나 정렬방법등을 설정하는 방법
 

  



Math 3: Trigonometry

     -주요 syntax
     PI, QUARTER_PI, HALF_PI, TWO_PI, radians(), degrees()
     sin(), cos(), arc()


     - processing에서는 sin(), cos()같은 삼각함수를 사용할 수 있으며, 입력 값으로 degree와 radian값을 사용한다.
 
     - degree는 일반적으로 사용하는 각도를 말하며, radian은 각도를 π(3.14) 로 치환한 값이며 360도는
2π 이다.

     - PI ->
π
       QUARTER_PI ->
π / 4
       HALF_PI  -> 
π / 2
       TWO_PI   -> 2π
     - sin()과 cos() 함수를 사용하면, 일정한 주기를 같는 곡선이나 색상 같은 그래픽 요소를 만들 수 있으며,
       원의 좌표를 두 함수로 나타낼 수 있다.
   
      




    - 중요 pages
       117p : degree와 radian에 대한 개념 설명
       118p : sin()과 cos()함수 및 이를 이용한 주기적인 이미지 그리기
       123p : sin()과 cos()함수를 이용하여 원의 좌표 표현
       124p : arc() 함수로 곡선 그리기
 















신고
Posted by IamFLATLINE

댓글을 달아 주세요


티스토리 툴바