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

프로세싱 수학함수 1

by 돌돌쌤 2012. 7. 28.

프로세싱 수학함수 1


프로세싱에서 수학적인 데이터 처리를 통한

드로잉 표현을 위해

수학함수를 알아보자


스케치 소스

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

void setup(){
  size(480,360);     // 창의 크기
  background(255);
  //noLoop();
}

void draw(){
  println(abs(-12.34));   // 절대값 12.34
  println(ceil(6.2));        // 올림 7(결과값 정수)
  println(floor(6.8));       // 내림 6(결과값 정수)
  println(round(6.5));     // 반올림 7(결과값 정수)
  println(constrain(mouseX,100,200));   // 마우스의x좌표를 100~200 사이값으로 제한

                                                        // x좌표가 90 이면 100으로 표현
  println(dist(10, 20, mouseX, mouseY));  // (10,20)에서 현재 마우스의 x,y까지의 거리 표현
  println(mag(mouseX, mouseY));   // (0,0)에서 현재 마우스의 x,y까지의 거리 표현
  println(exp(4));     //   e^4
  println(sq(4));       //  4^2
  println(sqrt(4));     // 4의 루트값 (4^0.5)
  println(pow(2,3));  // 2^3
  println(norm(127.5,0,255));    // 0~255사이의 127.5 값을 0~1사이의 대응값으로 표현 -> 0.5
  println(lerp(0,255,0.5));         // 0~1사이의 0.5값을 0~255사이의 대응값으로 표현 -> 127.5
  

/* 그래프 그리기 */
  for(int x=0; x<500;x++){
    float k = norm(x,0.0,500);   // 0~500사이의 x 값을 0~1 사이값으로 변환후 k에 저장
    float y = sq(k);      // 0~1사이의 k 값을 제곱후 y에 저장
    y*=500;        // 결국 y=500*sq(k)
                       //.....> 왜 y=500*sq(x)가 아닌가는 
                       // 그래프를 표현할 창사이즈가 x=480, y=360인데(size(480,360))
                       //  sq(20)=400으로 x가 20아상 값으로 그래프를 표현하기 힘듦
                       // x축의 스케일 조정 필요

                       // x값은 픽셀수 이므로 적당한 계산 필요, 즉 10픽셀을 -> 눈금 1로 계산한다든지....(k=x/10)
    point(x,y);    // 포인트를 찍어 그래프를 그린다.
  }
}

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


그래프 표현




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

Calculation
abs()
ceil()
constrain()
dist()
exp()
floor()
lerp()
log()
mag()
map()
max()
min()
norm()
pow()
round()
sq()
sqrt()