처음부터 이해하는 CG 프로그래밍을 위한 수학(삼각함수편)
전제
이 기사에서 .cs는 UnityC#을 나타내고 .shader는 shaderlabs를 나타내는 것으로 가정합니다.
화제에 들어가기 전에
호도법
일반적으로 우리는 각도를 나타낼 때 180°와 같이 도수법으로 표현하는 경우가 많습니다만, 삼각 함수에서는 이것과는 별도로 호도법으로 각도를 표현하는 것이 일반적입니다.
본 기사에서도 호도법을 보통으로 취급해 나가므로, 내용에 들어가기 전에 소개해 가려고 생각합니다.
시점으로서는, 일주를 어떻게 정의하고 있을까? 라는 부분에 주목해 갑니다.
도수법에서는, 일주를 $360°$로서 각도를 표현해, 단위에 「°」를 이용합니다.
반대로 호도법은, 일주를 $2\pi$로서 각도를 표현해, 단위에 「라디안」을 이용하는 표현 방법입니다. [^1]
그래서 관계식으로서는, 같은 일주라고 하는 부분에 주목하고 있으므로,
2\piラジアン=360°⇔1°=\frac{\pi}{180ラジアン}
라는 관계식을 이끌 수 있습니다.
그래서, 만약 본 기사를 읽고 있고 호도법으로 몇번이나 모를 때는 마지막 식을 활용해 주시면 좋겠습니다.
예를 들어, $30°$는 무엇 라디안인지를 계산하면 이렇게 됩니다.
\frac{\pi}{180}×30=\frac{\pi}{6}
덧붙여서, 코드로 나타내면 다음과 같이 됩니다.
example.csfloat angle = 30f; //度数表示
float rad; //弧度法
rad = angle * Mathf.Deg2Rad; //弧度変換
삼각 함수 정의
삼각함수 자체는 다음과 같이 정의되어 있습니다만, CG가게에는 필요 없기 때문에 흥미있는 사람만 보면 좋다고 생각합니다.
공식적인 정의
define(삼각 함수)
좌표평면상에서 아래 그림과 같이 $x$축의 양의 부분에 시선을 취하고 일반각 $\theta$의 동경과 원점을 중심으로 하는 반경 $r$의 원과의 교점 $P$ 의 좌표를 $(x, y)$로 한다. (아래 그림 참조)
이때, $\frac{y}{r},\frac{x}{r},\frac{y}{x}$의 각 값은 원의 반경 $r$에 관계없이 $\theta$만으로 정해지므로 $\sin\theta,\cos\theta,\tan\theta$
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
로 정해, 각각 일반각 $theta$의, 사인, 코사인, 탄젠트라고 한다.
이들은 모두 $\theta$의 함수이며, 정리해 삼각 함수라고 한다.
(이제 한번 읽는 수연의 고등학교 수학에서)
정의 자체는 길지만, 간결하게 정리하면 다음과 같이 됩니다.
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
이것을 정리하여 삼각 함수라고합니다. ($x,y,r,\theta$는 아래 그림이나 정의내 참조)
삼각함수 자체의 정의는 이렇게 되어 있습니다만, CG의 세계에서는 $r=1$로 취급하는 것이 매우 많습니다.
(왜냐하면, 각도 정도밖에 생각하지 않기 때문에, 길이는 필요 없다고 생각하는 경우가 많기 때문에)
그래서 $r=1$로 하면 정의는 이렇게 바뀔 수 있습니다.
\sin\theta=y, \cos\theta=x, \tan\theta=\dfrac{y}{x}
이렇게 하면 굉장히 심플하게 생각할 수 있네요.
(보충)
느낌이 좋은 사람이라면 알겠다고 생각합니다만, $\tan\theta$는 직선의 기울기를 나타냅니다.
이 성질은 CG 가게에서 자주 사용하는 이야기이므로 기억하는 것이 좋습니다.
위 그림을 예로 하여 원점과 점 P의 기울기를 생각해 보겠습니다.
예
직선의 기울기는
(직선 기울기) =\dfrac{(y의 변화량)}{(x의 변화량)}
따라서 위 그림의 직선 OP의 기울기는
(직선 기울기) =\dfrac{(y-0)}{(x-0)}=\dfrac{y}{x}
하지만, 이것은 $\tan\theta$와 같은 값이군요.
그래서 여기에서도 $\tan\theta$는 직선의 기울기를 나타내는 것을 알 수 있다고 생각합니다.
삼각 함수의 값을 구하는 방법
기본적으로 삼각 함수의 값은 계산기를 사용하지 않는 한 거의 알 수 없습니다.
그러나 유명각[^2]만은 알려져 있으므로($\tan\frac{\pi}{2}$ 제외) 그래서 그것을 소개합니다.
그리고, 이후는 호도법으로 각도를 씁니다.
각도
$\sin\theta$
$\cos\theta$
$\tan\theta$
$0$
$0$
$1$
$0$
$\dfrac{\pi}{6}$
$\dfrac{1}{2}$
$\dfrac{\sqrt{3}}{2}$
$\dfrac{1}{\sqrt{3}}$
$\dfrac{\pi}{4}$
$\dfrac{1}{\sqrt{2}}$
$\dfrac{1}{\sqrt{2}}$
$1$
$\dfrac{\pi}{3}$
$\dfrac{\sqrt{3}}{2}$
$\dfrac{1}{2}$
$\sqrt{3}$
$\dfrac{\pi}{2}$
$1$
$0$
undefined
$\pi$
$0$
$-1$
$0$
$2\pi$
$0$
$1$
$0$
이와 같이 유명각은 값이 알려져 있으므로 이를 조합하여 모든 각도에 대한 값을 계산합니다.
그러나 어떻게 계산할까.
삼각함수에는 이를 해결하기 위한 공식이 많이 있습니다.
삼각 함수의 다양한 공식
여기에서는 이런 공식이 있다는 것을 소개해 나가므로 이런 공식이 있는 정도로 봐 주세요.
또, 실제로 각도 변환할 때로서의 참조처로서 사용해 주시면 고맙습니다.
삼각 함수의 상호 관계
$\sin\theta,\cos\theta,\tan\theta$에는 다음과 같은 관계가 있습니다.
\tan\theta=\frac{\sin\theta}{\cos\theta}
\sin^2\theta+\cos^2\theta=1
1+\tan^2\theta=\dfrac{1}{\cos^2\theta}
특히 $\sin^2\theta+\cos^2\theta=1$는 매우 자주 사용하므로 기억해 두는 것이 좋습니다.
조금 설명하면 첫 번째는 $\tan\theta$의 정의이고 두 번째는 정의 그림의 빗변을 찾는 방법이고 세 번째는 두 번째 식의 양쪽을 $\cos^2\theta $로 나누면 나옵니다.
사인 정리
아래 그림과 같이 삼각형 ABC가 있어 삼각형 밖에서 접하는 외접원의 반경을 R로 하면 다음과 같은 관계가 성립합니다.
\frac{a}{\sin{A}}=\frac{b}{\sin{B}}=\frac{c}{\sin{C}}=2R 이 정리는 외접원과도 얽히기 때문에, CG가게로서의 차례는 그렇게 없을지도 모릅니다.
각도끼리의 관계를 이끌 때 사용할 수 있습니다. 덧붙여서 이것을 코드로하면 다음과 같습니다.
example1.cs
a / Mathf.Sin(A) == 2 * R; // 사인 정리
example1.shader
a / sin(A) == 2 * R // 사인 정리
example2.cs
b / Math.Sin(B) == c / Mathf.Sin(C); // 사인 정리
example2.shader
b / sin(B) == c / sin(C); // 사인 정리
코사인 정리
아래 그림과 같은 삼각형 ABC에서 다음과 같은 관계가 성립합니다.
a^2=b^2+c^2-2bc\cos{A}
b^2=c^2+a^2-2ca\cos{B}
c^2=a^2+b^2-2ab\cos{C} 이쪽이 꽤 CG 가게로도 사용하는 경우가 많을 것입니다.
(변의 길이를 구하는데 편리하기 때문에) 덧붙여서 코사인 정리를 코드로 쓰면 다음과 같이 됩니다.
example.cs
a * a == b * b + c * c -2 * b * c * Mathf.Cos(θ); // 코사인 정리
example.shader
a * a == b * b + c * c -2 * b * c * cos(θ); // 코사인 정리
가법 정리
삼각함수를 다룰 때 다음 식은 매우 중요한 수식입니다.
코드상에서는, 임의의 각도로 컴퓨터가 계산해 주기 때문에 필요 없습니다만, 논리를 생각할 때에는 끊어도 끊어지지 않는 관계식입니다.
\sin(α+β)=\sinα\cosβ+\cosα\sinβ
\sin(α-β)=\sinα\cosβ-\cosα\sinβ
\cos(α+β)=\cosα\cosβ-\sinα\sinβ
\cos(α-β)=\cosα\cosβ+\sinα\sinβ
라고 해도, 기억해 두는 것은 첫번째와 세번째만으로 충분해요.
(그 외는 부호를 바꿀 뿐이기 때문에)
배각 공식 · 반각 공식
배각의 공식은 가법 정리를 변형하여 만듭니다.
(구체적으로는 $α$와 $β$를 모두 $\theta$로 한다.)
코드상에서는, 임의의 각도로 컴퓨터가 계산해 주기 때문에 필요 없습니다만, 똑같이 논리를 생각할 때에 나오겠지요.
결과는 다음과 같습니다.
\sin2\theta=2\sin\theta\cos\theta
\cos2\theta=\cos^2\theta-\sin^2\theta=2\cos^2\theta-1=1-2\sin^2\theta
한편, 반각의 공식은 배각의 공식을 이항하여 만듭니다.
결과는 다음과 같습니다.
\sin^2\theta=\dfrac{1-\cos2\theta}{2}
\cos^2\theta=\dfrac{1+\cos2\theta}{2}
화적 공식
화적의 공식도 가법정리를 사칙연산하여 만들어집니다.
이 공식, 의외로 편리하기 때문에 논리를 생각할 때 사용하는 것도 자주.
화적의 공식은 다음과 같습니다.
\sinα+\sinβ=2\sin\frac{α+β}{2}\cos\frac{α-β}{2}
\sinα-\sinβ=2\cos\frac{α+β}{2}\sin\frac{α-β}{2}
\cosα+\cosβ=2\cos\frac{α+β}{2}\cos\frac{α-β}{2}
\cosα-\cosβ=-2\sin\frac{α+β}{2}\sin\frac{α-β}{2}
여기까지 이해해 두면, 삼각함수 분야로서는 틀림없을 것입니다.
확실히 어떤 코드를 보더라도 삼각 함수 부분은 기초로 막히지 않을 것입니다.
덤
삼각 함수를 실제로 어떻게 적용하는지 몇 가지 소개합니다.
역삼각 함수 역삼각함수란 삼각함수의 역함수의 총칭을 말합니다.
역함수의 경우,
사실, 간단한 정의는 다음과 같습니다.
y=\arcsin{x}=\sin^{-1}{x} ⇔ x=\sin{y}
y=\arccos{x}=\cos^{-1}{x} ⇔ x=\cos{y}
y=\arctan{x}=\tan^{-1}{x} ⇔ x=\tan{y}
UnityC#이면 ASin, Acos, Atan, Atan2이고 shaderlabs라면 asin, acos, atan, atan2라는 내장 함수가 역삼각 함수에 해당합니다.
극좌표 변환
극좌표 변환이란 x축과 y축이 직교하는 직교 좌표계를 각도와 길이로 나타내는 극좌표계로 변환하는 것을 말합니다.
극좌표가 좋은 곳으로서 곡선적인 움직임이 특기라는 강점이 있기 때문에 종종 사용됩니다.
그럼 실제로 수학적으로 살펴보겠습니다.
직교 좌표계에서의 점 P의 좌표를 (x, y)로 하고, 동지점에 대응하는 극좌표계의 좌표를 (r,$\theta$)로 합니다.
이 사이트 이때 x, y와 r, $\theta$의 관계는 다음과 같습니다. r=\sqrt{x^2+y^2}
θ=\tan^{-1}{\frac{y}{x}}
이것의 응용 예로서 uv의 극좌표 변환이 있으므로 코드를 올려 둡니다.
example.shader
float dividePI = 1 / (3.14159265358*2); // 정규화를 위한 1/π^2
float uv = 2* i.uv - 1; // uv 정의 영역을 [0, 1]에서 단위 원의 [-1, 1]로
float r = 1 - sqrt(uv.x * uv.x + uv.y * uv.y); // 극좌표 길이 정의
float theta = atan2(uv.y, uv.x) * dividePI; // 극좌표 각도 정의.
uv.x = theta; uv.y = r; 더 신경이 쓰이는 분은 이 기사를 읽어 보면 좋을 것입니다.
본질적인 부분이 많기 때문에 이해하면 매우 재미 있다고 생각합니다.
다음 (벡터 편) : htps : // m / dr 켄 / ms / 41b4에 c6b에서 794cbcd0f6
[^1]: 호도법 자체의 정의는 여기에서는 필요하지 않기 때문에 생략했다.
[^2]: 0°,30°,45°,60°,90°,...와 같은 삼각형에 잘 나오는 각도
Reference
이 문제에 관하여(처음부터 이해하는 CG 프로그래밍을 위한 수학(삼각함수편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hatuxes/items/6151da80f033e96f2acb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
호도법
일반적으로 우리는 각도를 나타낼 때 180°와 같이 도수법으로 표현하는 경우가 많습니다만, 삼각 함수에서는 이것과는 별도로 호도법으로 각도를 표현하는 것이 일반적입니다.
본 기사에서도 호도법을 보통으로 취급해 나가므로, 내용에 들어가기 전에 소개해 가려고 생각합니다.
시점으로서는, 일주를 어떻게 정의하고 있을까? 라는 부분에 주목해 갑니다.
도수법에서는, 일주를 $360°$로서 각도를 표현해, 단위에 「°」를 이용합니다.
반대로 호도법은, 일주를 $2\pi$로서 각도를 표현해, 단위에 「라디안」을 이용하는 표현 방법입니다. [^1]
그래서 관계식으로서는, 같은 일주라고 하는 부분에 주목하고 있으므로,
2\piラジアン=360°⇔1°=\frac{\pi}{180ラジアン}
라는 관계식을 이끌 수 있습니다.
그래서, 만약 본 기사를 읽고 있고 호도법으로 몇번이나 모를 때는 마지막 식을 활용해 주시면 좋겠습니다.
예를 들어, $30°$는 무엇 라디안인지를 계산하면 이렇게 됩니다.
\frac{\pi}{180}×30=\frac{\pi}{6}
덧붙여서, 코드로 나타내면 다음과 같이 됩니다.
example.cs
float angle = 30f; //度数表示
float rad; //弧度法
rad = angle * Mathf.Deg2Rad; //弧度変換
삼각 함수 정의
삼각함수 자체는 다음과 같이 정의되어 있습니다만, CG가게에는 필요 없기 때문에 흥미있는 사람만 보면 좋다고 생각합니다.
공식적인 정의
define(삼각 함수)
좌표평면상에서 아래 그림과 같이 $x$축의 양의 부분에 시선을 취하고 일반각 $\theta$의 동경과 원점을 중심으로 하는 반경 $r$의 원과의 교점 $P$ 의 좌표를 $(x, y)$로 한다. (아래 그림 참조)
이때, $\frac{y}{r},\frac{x}{r},\frac{y}{x}$의 각 값은 원의 반경 $r$에 관계없이 $\theta$만으로 정해지므로 $\sin\theta,\cos\theta,\tan\theta$
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
로 정해, 각각 일반각 $theta$의, 사인, 코사인, 탄젠트라고 한다.
이들은 모두 $\theta$의 함수이며, 정리해 삼각 함수라고 한다.
(이제 한번 읽는 수연의 고등학교 수학에서)
정의 자체는 길지만, 간결하게 정리하면 다음과 같이 됩니다.
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
이것을 정리하여 삼각 함수라고합니다. ($x,y,r,\theta$는 아래 그림이나 정의내 참조)
삼각함수 자체의 정의는 이렇게 되어 있습니다만, CG의 세계에서는 $r=1$로 취급하는 것이 매우 많습니다.
(왜냐하면, 각도 정도밖에 생각하지 않기 때문에, 길이는 필요 없다고 생각하는 경우가 많기 때문에)
그래서 $r=1$로 하면 정의는 이렇게 바뀔 수 있습니다.
\sin\theta=y, \cos\theta=x, \tan\theta=\dfrac{y}{x}
이렇게 하면 굉장히 심플하게 생각할 수 있네요.
(보충)
느낌이 좋은 사람이라면 알겠다고 생각합니다만, $\tan\theta$는 직선의 기울기를 나타냅니다.
이 성질은 CG 가게에서 자주 사용하는 이야기이므로 기억하는 것이 좋습니다.
위 그림을 예로 하여 원점과 점 P의 기울기를 생각해 보겠습니다.
예
직선의 기울기는
(직선 기울기) =\dfrac{(y의 변화량)}{(x의 변화량)}
따라서 위 그림의 직선 OP의 기울기는
(직선 기울기) =\dfrac{(y-0)}{(x-0)}=\dfrac{y}{x}
하지만, 이것은 $\tan\theta$와 같은 값이군요.
그래서 여기에서도 $\tan\theta$는 직선의 기울기를 나타내는 것을 알 수 있다고 생각합니다.
삼각 함수의 값을 구하는 방법
기본적으로 삼각 함수의 값은 계산기를 사용하지 않는 한 거의 알 수 없습니다.
그러나 유명각[^2]만은 알려져 있으므로($\tan\frac{\pi}{2}$ 제외) 그래서 그것을 소개합니다.
그리고, 이후는 호도법으로 각도를 씁니다.
각도
$\sin\theta$
$\cos\theta$
$\tan\theta$
$0$
$0$
$1$
$0$
$\dfrac{\pi}{6}$
$\dfrac{1}{2}$
$\dfrac{\sqrt{3}}{2}$
$\dfrac{1}{\sqrt{3}}$
$\dfrac{\pi}{4}$
$\dfrac{1}{\sqrt{2}}$
$\dfrac{1}{\sqrt{2}}$
$1$
$\dfrac{\pi}{3}$
$\dfrac{\sqrt{3}}{2}$
$\dfrac{1}{2}$
$\sqrt{3}$
$\dfrac{\pi}{2}$
$1$
$0$
undefined
$\pi$
$0$
$-1$
$0$
$2\pi$
$0$
$1$
$0$
이와 같이 유명각은 값이 알려져 있으므로 이를 조합하여 모든 각도에 대한 값을 계산합니다.
그러나 어떻게 계산할까.
삼각함수에는 이를 해결하기 위한 공식이 많이 있습니다.
삼각 함수의 다양한 공식
여기에서는 이런 공식이 있다는 것을 소개해 나가므로 이런 공식이 있는 정도로 봐 주세요.
또, 실제로 각도 변환할 때로서의 참조처로서 사용해 주시면 고맙습니다.
삼각 함수의 상호 관계
$\sin\theta,\cos\theta,\tan\theta$에는 다음과 같은 관계가 있습니다.
\tan\theta=\frac{\sin\theta}{\cos\theta}
\sin^2\theta+\cos^2\theta=1
1+\tan^2\theta=\dfrac{1}{\cos^2\theta}
특히 $\sin^2\theta+\cos^2\theta=1$는 매우 자주 사용하므로 기억해 두는 것이 좋습니다.
조금 설명하면 첫 번째는 $\tan\theta$의 정의이고 두 번째는 정의 그림의 빗변을 찾는 방법이고 세 번째는 두 번째 식의 양쪽을 $\cos^2\theta $로 나누면 나옵니다.
사인 정리
아래 그림과 같이 삼각형 ABC가 있어 삼각형 밖에서 접하는 외접원의 반경을 R로 하면 다음과 같은 관계가 성립합니다.
\frac{a}{\sin{A}}=\frac{b}{\sin{B}}=\frac{c}{\sin{C}}=2R 이 정리는 외접원과도 얽히기 때문에, CG가게로서의 차례는 그렇게 없을지도 모릅니다.
각도끼리의 관계를 이끌 때 사용할 수 있습니다. 덧붙여서 이것을 코드로하면 다음과 같습니다.
example1.cs
a / Mathf.Sin(A) == 2 * R; // 사인 정리
example1.shader
a / sin(A) == 2 * R // 사인 정리
example2.cs
b / Math.Sin(B) == c / Mathf.Sin(C); // 사인 정리
example2.shader
b / sin(B) == c / sin(C); // 사인 정리
코사인 정리
아래 그림과 같은 삼각형 ABC에서 다음과 같은 관계가 성립합니다.
a^2=b^2+c^2-2bc\cos{A}
b^2=c^2+a^2-2ca\cos{B}
c^2=a^2+b^2-2ab\cos{C} 이쪽이 꽤 CG 가게로도 사용하는 경우가 많을 것입니다.
(변의 길이를 구하는데 편리하기 때문에) 덧붙여서 코사인 정리를 코드로 쓰면 다음과 같이 됩니다.
example.cs
a * a == b * b + c * c -2 * b * c * Mathf.Cos(θ); // 코사인 정리
example.shader
a * a == b * b + c * c -2 * b * c * cos(θ); // 코사인 정리
가법 정리
삼각함수를 다룰 때 다음 식은 매우 중요한 수식입니다.
코드상에서는, 임의의 각도로 컴퓨터가 계산해 주기 때문에 필요 없습니다만, 논리를 생각할 때에는 끊어도 끊어지지 않는 관계식입니다.
\sin(α+β)=\sinα\cosβ+\cosα\sinβ
\sin(α-β)=\sinα\cosβ-\cosα\sinβ
\cos(α+β)=\cosα\cosβ-\sinα\sinβ
\cos(α-β)=\cosα\cosβ+\sinα\sinβ
라고 해도, 기억해 두는 것은 첫번째와 세번째만으로 충분해요.
(그 외는 부호를 바꿀 뿐이기 때문에)
배각 공식 · 반각 공식
배각의 공식은 가법 정리를 변형하여 만듭니다.
(구체적으로는 $α$와 $β$를 모두 $\theta$로 한다.)
코드상에서는, 임의의 각도로 컴퓨터가 계산해 주기 때문에 필요 없습니다만, 똑같이 논리를 생각할 때에 나오겠지요.
결과는 다음과 같습니다.
\sin2\theta=2\sin\theta\cos\theta
\cos2\theta=\cos^2\theta-\sin^2\theta=2\cos^2\theta-1=1-2\sin^2\theta
한편, 반각의 공식은 배각의 공식을 이항하여 만듭니다.
결과는 다음과 같습니다.
\sin^2\theta=\dfrac{1-\cos2\theta}{2}
\cos^2\theta=\dfrac{1+\cos2\theta}{2}
화적 공식
화적의 공식도 가법정리를 사칙연산하여 만들어집니다.
이 공식, 의외로 편리하기 때문에 논리를 생각할 때 사용하는 것도 자주.
화적의 공식은 다음과 같습니다.
\sinα+\sinβ=2\sin\frac{α+β}{2}\cos\frac{α-β}{2}
\sinα-\sinβ=2\cos\frac{α+β}{2}\sin\frac{α-β}{2}
\cosα+\cosβ=2\cos\frac{α+β}{2}\cos\frac{α-β}{2}
\cosα-\cosβ=-2\sin\frac{α+β}{2}\sin\frac{α-β}{2}
여기까지 이해해 두면, 삼각함수 분야로서는 틀림없을 것입니다.
확실히 어떤 코드를 보더라도 삼각 함수 부분은 기초로 막히지 않을 것입니다.
덤
삼각 함수를 실제로 어떻게 적용하는지 몇 가지 소개합니다.
역삼각 함수 역삼각함수란 삼각함수의 역함수의 총칭을 말합니다.
역함수의 경우,
사실, 간단한 정의는 다음과 같습니다.
y=\arcsin{x}=\sin^{-1}{x} ⇔ x=\sin{y}
y=\arccos{x}=\cos^{-1}{x} ⇔ x=\cos{y}
y=\arctan{x}=\tan^{-1}{x} ⇔ x=\tan{y}
UnityC#이면 ASin, Acos, Atan, Atan2이고 shaderlabs라면 asin, acos, atan, atan2라는 내장 함수가 역삼각 함수에 해당합니다.
극좌표 변환
극좌표 변환이란 x축과 y축이 직교하는 직교 좌표계를 각도와 길이로 나타내는 극좌표계로 변환하는 것을 말합니다.
극좌표가 좋은 곳으로서 곡선적인 움직임이 특기라는 강점이 있기 때문에 종종 사용됩니다.
그럼 실제로 수학적으로 살펴보겠습니다.
직교 좌표계에서의 점 P의 좌표를 (x, y)로 하고, 동지점에 대응하는 극좌표계의 좌표를 (r,$\theta$)로 합니다.
이 사이트 이때 x, y와 r, $\theta$의 관계는 다음과 같습니다. r=\sqrt{x^2+y^2}
θ=\tan^{-1}{\frac{y}{x}}
이것의 응용 예로서 uv의 극좌표 변환이 있으므로 코드를 올려 둡니다.
example.shader
float dividePI = 1 / (3.14159265358*2); // 정규화를 위한 1/π^2
float uv = 2* i.uv - 1; // uv 정의 영역을 [0, 1]에서 단위 원의 [-1, 1]로
float r = 1 - sqrt(uv.x * uv.x + uv.y * uv.y); // 극좌표 길이 정의
float theta = atan2(uv.y, uv.x) * dividePI; // 극좌표 각도 정의.
uv.x = theta; uv.y = r; 더 신경이 쓰이는 분은 이 기사를 읽어 보면 좋을 것입니다.
본질적인 부분이 많기 때문에 이해하면 매우 재미 있다고 생각합니다.
다음 (벡터 편) : htps : // m / dr 켄 / ms / 41b4에 c6b에서 794cbcd0f6
[^1]: 호도법 자체의 정의는 여기에서는 필요하지 않기 때문에 생략했다.
[^2]: 0°,30°,45°,60°,90°,...와 같은 삼각형에 잘 나오는 각도
Reference
이 문제에 관하여(처음부터 이해하는 CG 프로그래밍을 위한 수학(삼각함수편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hatuxes/items/6151da80f033e96f2acb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
\sin\theta=\dfrac{y}{r}, \cos\theta=\dfrac{x}{r}, \tan\theta=\dfrac{y}{x}
y=\arcsin{x}=\sin^{-1}{x} ⇔ x=\sin{y}
y=\arccos{x}=\cos^{-1}{x} ⇔ x=\cos{y}
y=\arctan{x}=\tan^{-1}{x} ⇔ x=\tan{y}
Reference
이 문제에 관하여(처음부터 이해하는 CG 프로그래밍을 위한 수학(삼각함수편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hatuxes/items/6151da80f033e96f2acb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)