Mathf 수학함수

2015. 2. 3. 15:42C# And Unity

24. 각종 수학 함수
Mathf

=============================================================
1. 삼각 함수

sin(x), cos(x), tan(x) : 기본삼각함수

asin(x), acos(x), atan(x) : 역삼각함수

atan2(y,x) : atan(y/x)에 해당하는 함수로, 
    atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는  [-π, π]의 값을 리턴한다.
    atan2(y,x)는 x≠0 이면 항상 올바른 값을 계산핤 수 있으므로 더 선호한다.

sinh(x), cosh(x), tanh(x) : 쌍곡 삼각함수

sincos(x,s,c) : sin(x)와 cos(x)를 동시에 s, c로 리턴한다. 여기서 s, c는 x와 동일한 차원의 타입이어야 한다.

degrees(x) : 라디안 단위의 x값에 해당하는 각도값을 리턴한다.

radians(x) : 각도 단위의 x값에 해당하는 라디안값을 리턴한다.


2. 수학 함수

sqrt(x) : 제곱근

rsqrt(x) : 제곱근의 역수

exp(x), exp2(x), pow(x, y) : e^x, 2^x, x^y

ldexp(x) : x * 2^y

log(x), log10(x), log2(x) : loge(x), log10(x), log2(x)
→ 모든 로그함수의 인자값 x는 양수값으로 지정해야 한다. 
    x가 음수이면 함수값이 정의되지 않고, x=0이면 -무한대를 리턴한다.


3. 값 변환 함수

abs(x) : 절대값

sign(x) : 부호에 따라 음수이면 -1, 0이면 0, 양수이면 1을 리턴

ceil(x) : 올림한 정수를 리턴
floor(x) : 내림한 정수를 리턴
round(x) : 반올림한 정수를 리턴
→ 리턴하는 정수값의 타입은 모드 float 타입이다.

max(x,y), min(x,y) : 최대, 최소값

clamp(x, min, max) : x를 [min, max] 범위로 클램프한다.
    즉, x가 범위안에 있으면 x를 그대로 리턴하지만, min보다 작으면 min을, max보다 크면 max를 리턴한다.

saturate(x) : x를 [0, 1] 범위로 클램프한다.

lerp(x,y,s) : 선형보간인 x + s(y - x) 를 리턴한다. x, y, s는 모두 동일한 타입으로 지정.

step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다.

smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는 
    Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한다.

asfloat(x) : 입력인자값을 float 타입으로 바꾼다.
asint(x) : 입력인자값을 int 타입으로 바꾼다.
asuint(x) : 입력인자값을 uint 타입으로 바꾼다.

fmod(x,y) : x/y의 나머지를 실수로 리턴한다.

frac(x) : x의 소수점 이하 부분을 리턴한다.

frexp(x,e) : 주어진 실수 x의 표현에서의 소수점 이하값인 가수부분과 지수부분을 동시에 리턴한다.
    가수부분을 e로 리턴하고, 지수부분을 함수리턴값으로 리턴한다.

modf(x,i) : x의 정수부분을 i로 리턴하고, 소수점 이하부분을 함수리턴값으로 리턴한다.


4. 테스트 함수

a11(x) : 인자값의 모든 원소들이 0이 아닌지를 검사한다. 모두 0이 아니면 bool타입의 true값을 리턴한다.

any(x) : x의 원소중에 0이 아닌 원소가 하나라도 있으면 true값을 리턴한다.

isfinite(x) : 인자값이 무한대가 아닌 유한한 값이면 true를 리턴한다.

isinf(x) : 무한대 값(±INF)이면 true를 리턴한다.

isnan(x) : NAN(Not a Number)이면 true를 리턴한다.


5. 벡터 함수

cross(x,y) : 두 벡터의 외적을 계산한다. 두 인자값과 리턴값은 모두 float3 타입이다.

dot(x,y) : 두 벡터의 내적을 계산한다. 
distance(x,y) : 두 벡터의 거리를 계산한다.
length(x) : 벡터의 길이를 계산한다.
→ 이들은 모두 하나의 float를 리턴한다.

normalize(x) : 정규화된 벡터를 리턴한다. 즉, 리턴값은 x/length(x) 와 동일하다.

determinant(m) : 행렬식을 리턴한다. 입력인자는 정방행렬이어야 한다.

transpose(m) : 전치행렬을 리턴한다.

mul(x,y) : 두 행렬의 곱을 계산한다.


6. 기타 함수

ddx(x), ddy(x) : 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다.
fwidth(x) : abs( ddx(x) ) + abs( ddy(x) ) 를 리턴한다.
clip(x) : x의 한 원소가 0보다 작으면 현재 픽셀을 버린다. 
→ 이 함수들을 픽셀셰이더에서만 사용할 수 있다.

↓ 고급기법에서 사용되는 함수
faceforward(n, i, ng) : 관찰자를 향하는 표면 노말을 리턴한다.
reflect(i, n) : 반사벡터를 리턴한다.
refract(i, n, R) : 굴절벡터를 리턴한다.
lit(n·l, n·h, m) : 조명계수 벡터를 리턴한다.
noise(x) : 연기나 화재효과에 사용되는 Perlin 노이즈값을 리턴한다.

========================================================