본문 바로가기

Joy of Vex

Joy of Vex [Day11]

if 조건문

 

bbox의 y값은 몸의 중앙부에서 0.5의 값을 가지므로 0.5보다 작은 발부터 중앙부까지의 색이 {0,1,0} 값을 가지게 됨

 

@N과 {0,1,0}은 모두 크기 1을 가지게 되므로 dot의 결과는 cosθ가 된다.

노말 방향이 위를 바라볼수록 각도가 0도에 가까워지면서 값이 1에 가까워진다. 색상으로는 흰색이 됨

d의 값이 0.3보다 크다는 것은

cos 60º = 0.5 이고 cos 90º = 0 의 값을 가지므로 그 사이 값보다 크다는 것

위쪽을 향하는 면들의 색상이 흰색이 된다. 

0.3보다 값이 커지면 흰색 영역이 작아지고 값이 작아지면 영역이 커진다.

(빛을 받는 부분의 영역이 커지고 줄어든다고 생각하면 됨)

 

위의 식은

float d = dot(@N,{0,1,0});

if (d>chf("cutoff")) {
    @Cd = {1,1,1};
} else {
    @Cd = {0,0,1};
}

이렇게 else로 나타낼 수 있음

 

조건문에서의 같다는 표현

d=3처럼 같다는 조건일 때

if (d=3) 이 아니라 if(d==3) 이런식으로 =을 두개 달아줘야함!

float A = 0;
float B = sin($PI);

if ( A == B) {  // fails the test

예전에 처음 sin,cos을 후디니에서 다룰 때, 값이 0 이 아니라 다른 숫자로 나오는 것에 대해 의문을 가졌었는데

컴퓨터가 가진 소수점 자리수의 한계 때문에 같다고 인식을 못하는 거였다.

조건문 괄호 안의 내용이 거짓으로 인식되면 계산을 하지 않음

 if ( abs(A - B) < 0.00001 )

이렇게 A에서 B를 빼줄 때 0.0001의 값보다 작으면 동일하다는 것으로 같다는 것을 표현해줄 수 있는데

값이 음수가 될 수 있으니 절대값(abs) 을 활용해서 표현해준다.

 

다양한 조건문의 활용

A and B

조건 두개를 모두 만족시켜야함, 조건 A 그리고 B를 만족할 때: 조건 A, B 의 교집합

위의 식은 이렇게 &&을 써서 표현해줄 수 있음

 

조건 A 또는 B  을 만족할 때: A와 B의 합집합 , 이는 || 기호로 표현할 수 있음

A or B

@ptnum == 5 포인트 넘버가 5일 때

@ptnum != 5 포인트 넘버가 5가 아닐 때

@ptnum <= 5 포인트넘버가 5보다 작거나 같을 때 (이하일 때)

@ptnum >= 5 포인트넘버가 5보다 크거나 같을 때 (이상일 때)

@ptnum % 5 == 0 포인트넘버를 5로 나눈 나머지가 0일 때 (포인트 넘버가 5의 배수일 때) 

 

조건문의 식이 길 때는 변수로 나타내 주는 것이 알아보기 좋음

@ptnum % 5는 모래알처럼 사라지게 만들어줌

코드를 예쁘게 잘 쓰는 것이 중요!

 


지난 시간에 배웠던 내용들이 많아 좀 편하게 들을 수 있었다.

마지막에 length와 dot으로 쓴 코드가 왜 저런 결과가 나오는지에 대한 부분은 어려워서 좀 더 고민해봐야겠다..!

벌써 day11이라니 !

'Joy of Vex' 카테고리의 다른 글

Joy of Vex [Day12-2]  (0) 2023.02.20
Joy of Vex [Day12-1]  (0) 2023.02.16
Joy of Vex [Day10]  (0) 2023.02.14
Joy of Vex [Day09]  (0) 2023.02.13
Joy of Vex [Day08]  (0) 2023.02.09