Clolent

colorMode

colorMode 에는 RGB 와 HSB 모드 두가지가 있는데, RGB 는 흔히 우리가 아는 RED , GREEN, BLUE 3가지 색의
혼합으로 색을 표현하는 방법으로 fill ( R ,G , B) 혹은 fill ( R, G, B, A ) 로 색을 표현할 수 있다.

HSB 는 
색도(Hue), 채도(Saturation), 명도(Brightness/Value)  를 통한 방식이다. 

HSB를 아주 잘 표현한 예시 라고 하는데 글쎄...모르겠다.



HSB 는 위와같이 나타나 있다 실제로 코드상에서 사용 하기 위해서는


colorMode(HSB,100) ;

 fill(359/360.0 * 100 , 82, 93 ) ;

이런식으로 써야 내가선택한 색이 나오게 된다.

H 에 해당 하는 부분이 360도 Degree 인데, 이를 백분율로 바꿔줘야 하기 때문이라고한다.

그렇다 그냥 RGB를 쓰고 HSB를 안쓰면된다.


radians(degree)

라디안 단위와 각도를 단위변환을 위한 녀석으로, 이 과정을 거치지 않고 그냥 sin ( 10 ) 이런식으로하면 생각한 움직임이 나오지 않게 된다.


물체의 회전 ( 프로세싱 회전 ) 

물체가 회전하는 모습을 표현하려면 어떻게 해야할까, 그렇다. 삼각함수를 이용해야한다.
간단한 예시로 


 ellipse( 100  , 200 , 100 , 100  * sin(b) ) ;  이렇게 하면 세로로 회전할 것이고


 ellipse(100   , 200  , 100  * sin(b), 100 ) ; 이렇게하면 가로로 회전할 것이다.


속도 ? 속도...! 움직이는 속도를 다르게 !

물체가 그냥 움직이기만 하는건 쉽다 좌표값에 지속적인 어떤 값을 더하거나 빼면 되니까 ! 그런데,

그냥 일정학 속도가 아닌 움직이게 하려면 가속도를 가해주면 된다.

가속도는 예를 들면 목표값과 현재 위치를 빼서 그 비율을 이용하는 방법이 있다. 

두번째 예제 코드를 보면 쉽게 도전 할 수 있다.


x += ( 목표 - x ) * 가속도값


이렇게 하면 된다 



예제코드_스프링,회전하는원,sin 운동하는원, 랜덤하게 움직이는 폭탄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
 
void setup(){
 size(800,600); 
}
 
 int a  = 15 ;
int b = -250 ;
int c = -1 ;
 
int xx = 400 ;
int yy = 300 ; 
 
boolean flag_x = false ;
boolean flag_spring = false ;
boolean flag_circle2 = false ;
int temp1 ;
int temp2 ;
 
void draw(){
 background(255,255,255);
 forint i = 0 ; i <50 ; i++){
   line( 50 + a * i , 50 , 150 + a * i , 450 ) ;  
   line(  150 + a * i , 450 ,  50 + a * (i+1) , 50 ) ;  
 }  
 
  if( c >= 750  )
    flag_x = true ;
 else if ( c <= 0 )
     flag_x = false  ;
   if( flag_x )
     c -= 10 ;
   else
     c += 10 ;
     
  if( a >= 400  )
    flag_spring = true ;
 else if ( a <= 0 )
     flag_spring = false  ;
     
   if( flag_spring )
     a -= 2 ;
   else
     a += 2 ;
     
  if200+>= 600  )
    flag_circle2 = true ;
 else if ( 200+<= 0 )
     flag_circle2 = false  ;
     
   if( flag_circle2 )
     b -= 5 ;
   else
     b += 5 ;
 
 colorMode(RGB);
 fill(91,38,152 ) ;
 ellipse(100   , 200 + b , 100  * sin(b), 100 ) ;
 
 colorMode(HSB,100) ;
 fill(267/360.0 * 100 , 7459 ) ;
 ellipse(300  ,200 + b,100 ,100  * sin(b) ) ;  
 colorMode(RGB);
 
 
 fill(91,38,152 ) ;
 ellipse(0+c  , (width/2 + 50 * sin(radians(c)))  , 100 , 100  ) ;
 
 
 fill ( 0 ) ;
 
 temp1 = ( int ) random ( -30,30 ) ;
 temp2 = ( int ) random ( -30,30 ) ;
 
 ellipse( xx = ( xx + temp1 ) , yy = ( yy + temp2 ) , 100,100 )  ;
 line ( xx , yy, xx, yy- 90 ) ;
 
 fill(255,0,0);
 noStroke();
 triangle(xx,yy - 100 , xx + 20 , yy -80, xx - 20 , yy -80 ) ; 
 triangle(xx,yy - 75 , xx + 20 , yy -90, xx - 20 , yy -90 ) ; 
 stroke(1);
 if( xx >= 790 || xx <= 20 || yy <= 10 || yy >= 590 ){
  xx = width/2 ;
  yy = height/2 ;
 }
 
}
cs


예제코드_마우스 따라 그려지는 원, 가속과 감속, 멋짐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void setup (){
 size( 800,600) ; 
}
 
float x = 0.1f ;
float y = 0 ;
float targetX, targetY ;
float easing = 0.05f ;
 
void draw(){
  targetX = mouseX ;
  targetY = mouseY ;
  x += (targetX - x) * easing ;
  y += (targetY - y) * easing ;
 // ellipse ( x , y , 2*x , 2*y ) ; 
  ellipse ( x , y , 0.5 + x/3 ,0.5 +  y/3 ) ; 
}
 
cs




댓글 로드 중…

블로그 정보

Clolent - 커피물조절달인

최근에 게시된 글