파일 :

 

Curve.pdf

 

목차 :

 

목차 ............................................................................................................................................................................................... 2

 

들어 가며 ........................................................................................................................................................................................ 4


1. Combination ...................................................................................................................................................................... 6

1.1. Linear combination ...................................................................................................................................... 6

1.2. Linear independence .................................................................................................................................. 7

1.3. Cartesian coordinate system .............................................................................................................. 8
1.4. Convex combination .................................................................................................................................... 9


2. Polynomial & interpolation .............................................................................................................................. 13


2.1. Linear interpolation .................................................................................................................................. 16
2.2. Polynomial interpolation ..................................................................................................................... 17
2.3. Method of undetermined coefficients ...................................................................................... 18
2.4. Lagrange interpolation .......................................................................................................................... 19
2.5. Divided difference ...................................................................................................................................... 21
2.5.1. Linear interpolation .................................................................................................................... 21
2.5.2. Quadratic interpolation ........................................................................................................... 22
2.5.3. Divided difference & General intepolation............................................................ 23
2.6. Newton interpolation .............................................................................................................................. 25
2.7. Problem of polynomial interpolation ........................................................................................ 26
2.8. Spline interpolation .................................................................................................................................. 28
2.8.1. Cubic spline interpolation ..................................................................................................... 29
2.8.2. Solving natural cubic spline ............................................................................................... 31


3. Parametric equation & continuity ............................................................................................................. 33


3.1. Parametric equation ................................................................................................................................ 34
3.2. Parametric continuity ............................................................................................................................. 37
3.3.Geometric Continuity ................................................................................................................................ 40


4. Bé zier curve ................................................................................................................................................................... 42


4.1. Linear Bé zier curve ................................................................................................................................... 43
4.2. Quadratic Bé zier curve .......................................................................................................................... 43
4.3. Cubic Bé zier curve ..................................................................................................................................... 45
4.4. Composite Bezier curve ........................................................................................................................ 48


5. Spline Curve ................................................................................................................................................................... 50


5.1. Linear spline curve .................................................................................................................................... 50
5.2. Quadratic spline curves ........................................................................................................................ 51
5.3. Spline curves of higher degrees ................................................................................................... 53


6. Hermite spline .............................................................................................................................................................. 56


6.1. Finite difference ........................................................................................................................................... 58
6.2. Cardinal spline ............................................................................................................................................... 58
6.3. Catmul-Rom spline .................................................................................................................................... 58
6.4. Kochanek-Bartels spline ...................................................................................................................... 59
6.5. Monotone cubic interpolation ......................................................................................................... 60


7. B-Spline( Basis spline ) ....................................................................................................................................... 61


8. Nonuniform rational B-Spline( NURBS ) ............................................................................................. 65


8.1. Nonuniform B-spline ................................................................................................................................ 65
8.1.1. Uniform knot vector ................................................................................................................... 65
8.1.2. Open uniform knot vector .................................................................................................... 66
8.1.3. Non-uniform knot vector ....................................................................................................... 67
8.2. Rational curve ................................................................................................................................................ 68
8.3. Non-Uniform Rational B-Spline ..................................................................................................... 71
8.4. Construction of the basis functions ........................................................................................... 72
8.5. General form of a NURBS curve .................................................................................................... 76
8.6. General form of a NURBS surface ............................................................................................... 76


9. Subdivision Surface ................................................................................................................................................ 76

주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




이 장은 평소에 아주 어렵게만 생각하던 복소수의 개념을 기하학적으로 쉽게 이해할 수 있는 단초를 제시해 준다. 흥미로운 주제이다. 단지 아쉬운 점이 하나 있다면 이것을 과학에서 실제로 어떻게 응용하고 있는지 설명하고 있지 않다는 것이다. 그냥 수학적인 개념으로서만 이해해야 하나?




제곱근의 절대값과 개수 구하기




위의 식에 대한 n 제곱근의 절대값이 아래와 같다고 이야기하고 있다.



위의 식을 보면서 이유를 몰라 헤멜수도 있는데 이것은 다음과 동일하므로 헷갈릴 필요가 없다. 그냥 표현의 차이일 뿐이다.



문제는 "각도 n 개의 값을 다음의 공식으로부터 구할 수 있다" 고 이야기한다는 점이다. 처음에는 그 말때문에 엄청 헷갈렸다.



정확하게는 "m + 1 번째 각도는 다음의 공식에서 구할 수 있다" 라고 이야기해야 한다. 여기에서 m 은 [ 0, n - 1 ] 의 범위를 가진다. n 과 &θ0 은 고정되어 있으므로 m 만 변화시켜 가면서 값을 찾으면 된다.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 11. 극 좌표계




원문 표기





그림 11-5


그림 11-5 에서 갑자기 다음과 같은 공식이 나온다.




순간 "이게 뭐야 !!!" 라는 생각이 들었다. 그림에 제대로 된 표기가 없어서 그렇다.



그림 1. 그림 11-5 의 완성된 그림.



그림 11-6


그림 11-6 은 첨에 볼 때 뭔 소린가 싶다. 이것은 계속해서 극 좌표계인 ( r, θ ) 의 연장선상에 있다. "만약 극 좌표계의 r 성분에 radian 값을 증가시켜 넣으면서 해당 점을 찍으면 그 궤적은 어떻게 나올 것인가?" 라는 문제인거다.


r = θ 에서 θ 가 계속 증가하고 있기 때문에 반지름이 점점 넓어지면서 회전까지 하고 있기 때문에 결국에는 나선을 그리게 된다.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 10. 삼각함수의 역함수




이번 장은 특별한 내용은 없다. 역함수라는 것의 개념에 대해서 설명하고 삼각함수의 역함수를 사용해서 원래의 각도를 구할 수 있다는 것을 이야기하고 있다. 물론 범위의 제약은 있지만... 역함수로 구하는 각도가 호를 연상시킨다는 점에서 'arc' 가 붙는다는 것을 처음 알았다. 근데 팔은 로봇이라면서 왜 사람처럼 생겼지 ㅡㅡ;; 




원문 표기


역함수 : a reversed function; an inverse function.

로그 함수 : a logarithmic function.

지수 함수 : an exponential function.

삼각함수 역함수 : an inverse trigonometric function.




삼각함수 역함수의 유도


삼각함수의 역함수 값을 구하는데, 원래 삼각함수의 값을 각도별로 늘어 놓은 다음에, 삼각함수에 입력값이 출력값에 대한 역함수의 출력값이라는 식으로 설명하고 있다. 


이걸 보면서 의문이 들었다. "삼각함수의 역함수는 유도하지 않나?".


자료를 좀 찾아 보니 [ 정적분 삼각치환 공식 ] 이라는 글에 다음과 같은 언급이 있었다.


원래 삼각함수는 역함수가 존재할 수 없으나, 그 정의역을 적절히 조절해주면 일대일대응을 갖게되어, y=x에 의한 역함수를 얻을 수 있고 그것이 아크삼각함수이다.


- 출처 : 정적분 삼각치환 공식. 아제라테스.



주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 9. 파동




이 장은 드디어 파동에 대한 내용을 다룬다. 아주 단순한 사실로부터 시작해서 파동을 이해하기 쉽게 설명하고 있다. 물론 아무 생각없이 읽어도 될 정도는 아니다.




원문 표기


파동 : wave.

조화 파동 : harmonic wave.

정상파 : stationary wave.

고조파 : harmonic.




조화 파동 함수


책에서 조화 파동을 정의하기 전까지만 해도 "아 그렇구나" 하면서 끄덕끄덕하게 된다. 조화 파동의 공식을 유도해 가는 과정이 참 흥미롭다. 그런데 막상 공식이 나오면 "헉" 소리가 나온다.


여기에서 나를 힘들게 만든 것은 두 가지였다.

  • x 와 t 라는 두 개의 변수가 나온다( 지금까지 우리가 본 건 항상 변수가 하나였다; x 나 t ).
  • 파동수와 주파수의 개념이 헷갈린다.


파동이라는 것이 제자리에서 가만히 있지 않고 시간에 따라 다른 위치로 전달되기 때문에 복잡한 함수가 나오게 되는데, 처음 볼 때는 참 이해하기 힘든 것 같다. 조화 파동 함수를 책을 보지 않고 유도해 보는 것이 확실히 이해하는 데 도움이 될 것 같다.


[ 파동의 표현 ] 이라는 글도 읽어 볼 만 하다.




정상파 함수


교수가 뜬금없이 공식을 도출한다. 처음에 보고 이것도 "헉" 소리가 나왔다. 이건 너무 중간 단계를 뛰어 넘은 것 같다. 다음과 같은 식으로 설명했으면 좋았을 것 같다.


라는 함수를 생각해 보자. y 값의 범위는 [ -A, A ] 이다. 그런데 x 라는 변수만 있다면 시간에 따라서 진동하지 않고 제자리에 가만히 있게 된다. 그러므로 시간과 관련한 변수 t 가 필요하다.


y 값의 범위를 [ -A, A ] 를 유지하면서 시간 t 에 따라서 왔다 갔다 하게 만들려면 어떤 함수가 더 필요하다. 다음과 같은 형식이 될 것이다.



이 F 라는 함수를 곱했을 때 그것의 범위가 [ -1, 1 ] 까지라면 여전히 [ -A, A ] 를 유지하는 것이 가능하다. 우리는 그러한 함수를 하나 알고 있다. 바로 sin 함수이다. 시간에 따라서 [ -1, 1 ] 을 반복하는 함수는 이다. 그냥 t 만 써도 되지만 omega 를 붙인 이유는 지금까지 우리가 배워 왔던 단위나 개념을 유지하기 위해서이다. 그래서 최종 함수는 다음과 같이 결정될 수 있다.





고조파


책에서는 정수배의 주파수를 가진 파동들에 대해서 이야기를 하기는 하는데, 용어를 안 알려 줬다. 원래 주파수에 대한 정수배의 주파수 성분을 고조파( harmonic )이라고 부른다. 우리가 음악에 대해 이야기할 때 "화음이 맞다"라는 표현에서 '화음'의 영문 표현인 'harmony' 도 같은 어원을 가지는 것 같다.


아래 그림은 줄에서의 고조파를 보여 준다.


그림1. 줄에서 고조파 만들기. 출처 : Harmonic. Wikipedia.


아래 그림은 실제 악기에서 고조파가 어떤 식으로 동작하는지 보여 준다.


그림 2. 기타줄에서 harmonic. 출처 : Harmonic. Wikipeda.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 8. 삼각함수 그래프




이 장은 단순히 도형을 다루고 공식을 풀던 것에서 한 단계 더 나아가 파형을 다루기 시작하고 있다. 이 장에서의 기본 주기함수들은 다음 장으로 넘어 가면서부터 확장되고 응용된다( 파동이 나온다 ). 그러므로 이 장의 내용을 잘 이해하는 것이 중요하다.


레코디스의 딴지 때문에 실제 주기함수를 발견하다니 ㅡㅡ;;




원문 표기


삼각대 : tripot.

노출 : exposure.

주기 함수 :  periodic function.

진폭 : amplitude.

각주파수 : angular frequency.

주파수 : frequency.

위상 : phase.




위상 설명 오류?


책에서 에서 가 위상이라고 이야기하고 있다. 처음 위상의 정의를 보면 이해하기 힘들다. 예를 들어  라는 직선을 생각하면 당연히 x 축으로의 위상은 가 될 것이다.



그림1. 직선의 위상 변화.


그런데 주기 함수에서는 느닷없이 를 사용한다.


처음에는 이해가 가지 않았다. 그러나 주파수라는 것이 주기 함수를 전체적으로 scaling 하는 개념으로 생각하면 이해가 간다. 다시 말해  를 계산한 다음에  만큼 이동한 것이 아니라,  를 계산한 다음에 통째로 배 한 것이라는 것이다. 아래 그림을 보자.




그런데 이런 상황이 억지로 끼워 맞추려고 하면 심정적으로는 이해가 가는데 식을 봐서는 이해가 가지 않는다. 왜냐하면 아무리 봐도  는  계산 후  이동이기 때문이다. 아무래도 책에서 설명을 잘못 하고 있는 것 같다. 아마 를 설명하려고 한 것이 아닌가 싶다.




주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 7. 사인법칙과 코사인법칙




아 정말 삼각함수의 위대함을 인정하지 않을 수 없는 내용이 나온다. 모든 삼각형에 대해서 뭔가를 계산해야 할 때는 삼각함수를 이용할 수 있다. 트리고노메트리가 삼각함수에 집착하는 이유를 알만 하다. 사실 삼각형 뿐만이 아니라 모든 도형에 대해서도 적용될 수 있을 것이다. 모든 도형은 직각삼각형으로 분할될 수 있기 때문이다.




원문 표기


  • 내각 : interior angle.
  • 외각 : exterior angle.




삼각형의 내각의 합


"삼각형의 내각의 합은 180 도 이니까" 라는 말이 많이 등장하는데, 우리가 당연하게 알고 있던 사실을 갑자기 고민하게 된다. 왜 180 도일까? 삼각형의 내각의 합을 증명하는 글들은 많이 있다. "삼각형의 내각의 합 증명" 으로 구글링해 보기 바란다. 검색하면서 나온 글들을 대충 보니 증명방법이 6 가지 이상이라는 글도 있었다.


그중에서 실험적으로 직관적인 이해를 할 수 있을 만한 재밌는 글을 찾았다. 이건 학문적으로 봤을 때 제대로 증명은 아니지만 흥미로운 것 같다 : 삼각형은 세 내각의 합이 왜 180도일까?


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 6. 삼각함수 항등식




삼각함수에 대해 공부할 때, 삼각함수 항등식만 나오면 "그냥 그렇구나" 혹은 "머리 아프네" 라는 생각만 하고 대충 넘어 갔었다. 그런데 이 장을 보면서 삼각함수 항등식에 대한 두려움을 벗어 던질 수 있게 되었다. 기억 안 나면 유도하면 되지 ㅎㅎ


여담인데... 원서를 안 봐서 모르겠지만, 레코디스는 'record' 에다가 'is' 붙인게 아닌가 싶다. '기록돌이' 정도???


레코디스가 트리고노메트리스랑 싸우는 거 참... 지겹다.




원문 표기


  • 항등식 : an identical equation; an identity.
  • 관계식 : relation.
  • 덧셈 법칙 : additivity law.
  • 배각 공식 : formulas of multiple angle




Tangent 덧셈 법칙


작가가 귀찮았는지 tangent 덧셈 법칙을 쓰다가 중간에 건너 뛰고 결론을 내렸다. 뭐 이해하는 사람은 하겠지만, 순간적으로 "뭐지?" 했다.



주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 5. 호도법( 라디안 각도 ).




드디어 고블린의 부하가 등장한다. 이 장은 제목과는 다르게 단순하게 호도법 뿐만 아니라 여함수에 대한 담고 있다.




원문 표기.


라디안( 호도 ) : radian.

중심각 : central angle.

동위각 : a corresponding angle.

변역 : codomain.




호도법의 발견.


로봇인 팔에게 총을 "1 m 회전시켜" 라고 명령하는데서 "회전의 길이" 라는 개념을 생각하고 다시 "회전 각" 이라는 개념을 생각하는 과정을 보여 준다. 그런데 이야기가 좀 억지스럽다.


만약 내가 저자였다면 "팔의 팔과 총의 길이가 달라지면 1m 회전시키라고 했을 때 쏘는 방향이 달라지는 데 이걸 어떻게 하죠?" 라는 질문에서 글을 시작했을 것 같다. 그래야 뭔가를 회전시킬때 길이 보다는 각도를 사용해야 하는 것의 필요성을 강조할 수 있었을 것 같다.


그림 1. 회전 반경과 쏘는 방향의 차이.




원의 좌표, 삼각함수, parametric equation.


이전에도 언급했던 거지만, 삼각함수는 원과 연관지어 생각하는 것이 더 좋은 것 같다. 실제로 3D 관련 업무를 하다가 보면 그런 관점이 많이 필요한 것 같다. 특히 parametric function 의 경우에 이런 관점은 중요하다.


책에 나와 있듯이 원의 정의와 피타고라스 정리로부터 다음과 같은 식을 유도할 수 있다.


그림 2. 원과 피타고라스 정리.


하지만 위의 공식으로는 "x, y, r 중 두 값을 알고 있을 때, 나머지 한 항의 값을 구하라" 라는 식의 문제만 풀 수 있지 실제 응용프로그램에서는 사용하기 힘들다. 왜냐하면, 예를 들어 r 만 알고 있을 때 ( x, y ) 의 해는 무한하게 많이 존재하기 때문이다. 게다가 r 과 x 를 알고 있다고 해도 y 의 해는 두 개가 나오게 된다( 양수와 음수 ).


그렇다면 r 을 알고 있을 때, 어떻게 원을 그릴 수 있을까? 이럴 때는 parametric equation 을 사용할 수 있다. Wikipedia 에는 다음과 같이 정의되어 있다.


수학에서, curve 의 parametric equation 은 curve 의 한 점의 좌표를 parameter 라는 변수로서 표현하는 공식을 통해 이 curve 를 표현하는 한 방법이다. 예를 들어,




는 단위 원에 대한 parametric equation 이다. 여기에서 t 가 parameter 이다.

- 출처 : Parametric equation. Wikipedia.


다시 말해 다음과 같은 식으로 curve( 여기에서는 원 ) 상의 한 점을 parametric equation 으로 표현할 수 있다.


그림 3. 원의 parametric equation.


만약 a 나 b 를 시간이 지남에 따라서 증가시키면, 원을 그릴 수 있다.




가능한 삼각함수 값의 법칙과 그래프.


가능한 삼각함수 값의 법칙을 이야기할 때 그래프를 그려 줬다면 더 이해하기 쉽지 않았을까 생각한다.


그림 4. sine 그래프. 출처 : Trigonometry. Wikipedia.


그림 5. tangent 그래프. 출처 : Trigonometry. Wikipedia.




여러 삼각함수들의 기하학적 관계.


여러 가지 삼각함수들의 기하학적 관계가 아래 그림에 나와 있다. 만약 모른다면 일일이 계산해야 할 것 같은데...


그림 6. 여러 삼각함수들의 관계. 출처 : Trigonometry. Wikipedia.






주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 4. 삼각함수의 응용.




3장에서 협박을 한 고블린은 최종보스인지 떡밥만 던지고 나오지를 않는다. 이제부터 vector 나 물리 개념들이 나오면서 슬슬 머리가 아파지기 시작한다. 그런데 여전히 억지 설정들이 있기는 하지만, 평소에 생각지도 못한 부분들에서 삼각함수를 응용하는 걸 보면 재밌다( 고등학교때 물리 수학 공부를 열심히 안 해서리... 그냥 새롭다 ㅠㅠ ).




원문 표기.


  • 벡터 : vector.
  • 속도 : velocity.
  • 성분 벡터 : component vector.
  • 마일 : mile ( = 1.609 km ).
  • 원심력 : centrifugal force.
  • 관성력 : inertial force; the force of inertia.
  • 장력 : tension.
  • 중력 : gravity.




벡터의 합과 성분벡터.


책에서는 두 벡터의 합을 구할 때 "두 방향은 반드시 서로 직각이어야 한다는 점이다" 라고 이야기하고 있다. 그런데 사실상 벡터의 합을 구하기 위해서 벡터들이 서로 수직일 필요는 없다. 성분 벡터를 가지고 벡터의 합을 구하면 피타고라스 정리를 이용하기가 쉬울 뿐이다.


예를 들어서 "배가 시속 10 km 로 이동하는 물 위에 떠 있는데 다음과 같이 시속 5 km 로 바람이 불면 배는 1 시간 뒤에 어디에 있겠는가?" 라는 질문을 낼 수 있다( 이 때 배는 바람의 힘을 온전하게 받는다고 가정한다 ).



그림 1. 벡터 합 구하기 문제.


사실 이 문제를 풀기 위해서는 두 벡터의 좌표값까지 다 제시해야 하지만, 여기에서는 개념만 가시적으로 설명하려고 하기 때문에 생략한다.


이 두 벡터를 합하면 다음과 같은 결과가 나온다. 각 벡터를 다른 벡터의 화살표 끝에서 평행하게 같은 크기로 그어서 평형사변형을 만든다. 그러면 그 대각 벡터가 원하는 벡터가 된다.


그림 2. 벡터의 합 결과.


사실 이 결과는 두 벡터의 성분을 "성분" 별로 더한 것과 같은 결과이다. 이것을 해석하면 "파란 벡터만큼 이동한 후, 빨간 벡터만큼 이동한다" 가 된다. 반대 순서로 이동해도 결과는 동일하다. 왜냐하면 덧셈을 할 때는 순서가 상관이 없기 때문이다( 덧셈의 교환 법칙 ).


이것을 극단적으로 쉽게 확인할 수 있는 것이 축별 성분 벡터이다. 2D 좌표계에서 좌표는 ( x, y ) 로 표현된다. 이 좌표의 각 성분( 즉 'x' 와 'y' )는 각 축에서의 위치를 표현하고 있다. 그러면 축별 성분 벡터는 ( x, 0 ) 과 ( 0, y ) 을 의미하고 있음을 알 수 있다. ( x, y ) 는 ( x, 0 ) 과 ( 0, y ) 를 더하면 된다. 이 두 벡터를 더하면 ( x + 0, y + 0 ) 이다. 이것을 그림으로 표현하면 다음과 같다.


그림 3. 성분 벡터.


위에서 이야기한 벡터끼리의 합은 이러한 성질을 이용해서 수행되는 것이다.




속도의 수직 성분.


이 책을 읽다가 가끔 이해가 안 가는 부분이 생긴다. 대체 이 책의 수준을 어디에다가 맞추고 있는지 이해가 안 갈 때가 있다( 물론 전반적으로는 쉽게 설명하는 편이고, 이것도 그 전장에서 설명했던 내용들이다. 하지만 무조건 앞에 다 이해했다고 가정하기 보다는, 복습 개념으로 좀 설명을 해 주던가 아니면 "이해 안 가는 사람은 어디를 봐라" 라고 해 줬으면 좋았으리라 생각한다 ).


속도의 수직 성분이 대뜸 다음과 같은 공식처럼 제시된다.



이 식을 보고 "???" 하는 사람들이 있을 것이다. 이것은 닮은 삼각형의 성질을 생각해 보면 좀 더 쉽게 이해할 수 있다. 빗변이 1 일때, 대변은 sinA 가 되고, 밑변은 cosA 가 된다. 그리고 닮은 삼각형의 ( 정비례 ) 성질을 이용하면, V0 일 때는 sinA 에 V0 을 곱해주면 되는 것이다. 사실 그냥 이해한 사람들도 많을 것이다. 하지만 아직 삼각함수나 그 응용에 익숙하지 않은 사람들은 갑자기 나오는 공식에 깜놀하지 않을까 생각한다. 나도 순간 "뭐지?" 했다.


그림4. 수직 성분 벡터 구하기. x 는 대변의 길이( 높이 )이다.




미끄러운 경사길에서 증명 문제.


그림 4-11 에서 "두 각도 A 가 같음을 기하학적으로 증명해 보라" 라는 문제가 있다. 이것은 삼각형의 내각의 합은 180 도이고 직선은 180 도라는 성질을 이용하면 증명할 수 있다.


그림 5. 4-11 그림 기하학적으로 증명하기.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 3. 삼각함수

사인( sin ), 코사인( cos ), 탄젠트( tan )




이번 장은 떡밥을 던져 놓고 삼각함수를 정의하게 만든다. 삼각함수를 만들어 가는 과정이 흥미롭다. 이 책의 저자는 나름 사람 이름으로 parody 를 한다. IT 관련 서적의 이름인 O'Reilley 에서 따온 오레일리( 원래는 '오라일리' 라고 해야 할 듯 )라든가 삼각법을 의미하는 trigonometry 에서 따온 트리고노메트리스 등의 이름이 나온다. 아마도 '피타고라스', '아리스토텔레스', '소크라테스처럼 뒤에다가 's' 를 붙인거 같은데, 잘 모르면 "이름이 뭐 이래" 라는 생각이 들 수 있다. 하지만 원래 용어의 원문 표기를 아는 사람은 "피식"하고 미소짓게 만든다.


아마도 역자가 "곳곳에서 번뜩이는 저자의 유머를 제대로 전달하지 못한 아쉬움 등이 남습니다" 라고 이야기할 수 밖에 없었던 이유가 이런 상황 때문이 아닌가 싶다. 나중에 국왕이 "자네의 공로를 기리기 위해 앞으로 이 분야는 삼각법( Trigonometry )이라고 부르기로 하겠네" 라고 이야기하게 되는데, 우리 말대로 한다고 연구자 이름들 '삼각돌이' 라는 식으로 번역할 수는 없었을테니... 번역자가 참 난감하지 않았을까 싶다. 그래서 타문화권의 글을 번역하는 데는 어려움이 많은 것 같다.


역자에게 경의를...




원문 표기


  • 정삼각형 : equilateral triangle; regular triangle.
  • 대변 : opposite edge.
  • 유리수 : rational number.
  • 무리수 : irrational number.
  • 제곱근 : square root.
  • 대수 : algebra.
  • 삼각비 : trigonometric ratio.
  • 삼각함수 : trigonometric function.
  • 호도법 : circular measure.




원과 직각삼각형, 그리고 vector 의 길이.


원의 정의는 "한 점에서 같은 거리에 있는 점들의 모임( 자취 )" 이다. 즉 원의 중심에서 원의 둘레에 존재하는 모든 점과의 거리가 동일하다는 것이다. 결국 2D 좌표계에서 보면 다음과 같은 결과를 확인할 수 있다.


그림1. 좌표와 직각삼각형.


이것은 누구나 다 알고 있는 사실이다. 하지만 좌표계와 점만 달랑 그려 놓으면, 이러한 기본적인 사실을 떠 올리지 못하는 경우가 많다. 이러한 사실에 기반해서 유클리드 좌표계( 데카르트 좌표계 )에서는 점 사이의 거리를 구하거나 vector 의 길이를 구할 때 피타고라스 정리를 사용하는 것이다.


책에서 트리고노메트리스는 이러한 성질을 이용해 길이가 1 인 원을 기반으로 여러 가지 각도에서 밑변과 대변의 길이를 재고, 닮은삼각형의 비례적 성질을 이용해 빗변의 길이가 1 이 아닌 경우의 밑변과 대변의 길이를 계산하는 것을 보여 준다.




삼각비 이름 외우기.


학교 다닐 때 sine, cosine, tangent 를 외우는 방법을 알파벳 필기체를 통해서 배웠었는데, 구글링을 하다 보니 의외로 그런 설명이 없어서 놀랐다. 원래 외국은 그렇게 안 배우나...


외국에서는 삼각비 이름을 "SOH-CAH-TOA" 로 외우는 것 같다. 요건 밑변Adjacent edge, 대변Opposite edge, 빗변Hypotenuse edge 의 머리글자를 가지고 만든 것이다.


그림 2. 직각삼각형 각 변의 이름. 출처 : Wikipedia.


Sine 은 Opposite / Hypotenuse 이므로 SOH( Sine : Opposite over Hypotenuse ).

Cosine 은 Adjacent / Hypotenuse 이므로 CAH( Cosine : Adjacency over Hypotenuse ).

Tangent 는 Opposite / Adjacent 이므로 TOA( Tangent : Opposite over Adjacent ).


그래서 COH-CAH-TOA 이다. 우리 발음으로 하면 "소우카토아" 정도 될라나...


하여간 우리는 한국 사람이라 변의 이름을 영어로 외우지는 않으니, 외국의 방식은 무리가 있다. 아래는 필기체를 쓰는 순서를 보여 주는 애니메이션 이미지이다. 순서대로 's', 'c', 't' 이다.


그림 3. 필기체 's', 'c', 't'. 출처 : Handwriting For Kids.


아래 그림과 같이 필기체를 쓰는 순서대로 외울 수 있다. 물론 항상 관심을 주는 각은 왼쪽 아래에 있다고 가정하고 외워야 한다. 


그림 4. 삼각비 이름 외우기.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.




[ 이야기로 아주 쉽게 배우는 삼각함수 ] 2. 직각삼각형 문제를 풀다.




이번에는 크리스마스 트리를 만들기 위해서 나무의 높이를 구하는 방법을 알아내는 이야기이다. 이 책의 장점은 "어떤 이론을 내세운 뒤에 거기에 끼워 맞춰 사고하는 방식"을 강요하는 것이 아니라, "어떤 상황으로부터 어떤 이론을 만들어 가는 과정"을 가르쳐 주는 데 있는 것 같다.


그런데 이야기를 억지로 끼워 맞추려고 하다가 보니 좀 문제가 있다. 나무 꼭대기까지의 각도는 대체 어떻게 구한거지???




용어 원문 표기.


  • 이등변 삼각형 : an isosceles triangle; an equilateral triangle.
  • 직각 삼각형 : a right-angled triangle.
  • 직각 삼각형의 빗변 : the hypotenuse of a right-angled triangle.
  • 천문 단위 : a.u. : angstrom unit.




낭떠러지에서 각도 재기.


책에서는 그림을 상황에 맞게 그려 놓지 않아서 좀 헷갈리는 부분이 있다. 낭떠러지 끝에서 각도를 쟀다고 하는데, 이 문장을 볼 때 이것이 어느 쪽 낭떠러지인지 판단하기 힘들다. 40 도의 각이 나왔다고 하는 것을 봐서는 아래 그림에서 볼 수 있듯이 A 지점에서 쟀다고 할 수 있다. 만약 B 지점에서 40 도였다면 그 전에 이미 45 도인 지점을 찾을 수 있었을 것이기 때문이다.


그림1. 절벽 위의 나무.




닮은 삼각형 이해하기.


닮은 삼각형을 이해하는 가장 쉬운 방법은 좌표계를 이용하는 것이다. 다음과 같은 2D 좌표계에 삼각형을 그려 보자. y = ax 라는 직선을 빗변으로 공유한다고 가정하자.


그림 2. 닮은 삼각형의 성질.


x = n 인 지점에서는 y = an 이고, x = m 인 지점에서는 y = am 으로 정비례한다는 것을 알 수 있다. 이러한 관계는 직각이 아니라도 마찬가지이다. 그려 보면 쉽게 알 수 있을 것이다. 각 직각 삼각형의 빗변의 길이도 피타고라스 정리에 의해서 쉽게 구할 수 있는데, 각각 다음과 같다.




빗변 역시 비례하고 있음을 알 수 있다.


주의 : 이 문서는 책의 요약본이 아닙니다. 책을 보다가 이해가 잘 안 되는 내용, 재밌었던 내용, 보충해야 할 만한 내용 등을 정리해 놓은 일종의 노트같은 것입니다. 개인적으로는 정기적이고 의미있게 책을 보려는 시도이며, 이 책을 보는 다른 사람에게도 도움이 되었으면 좋겠습니다.



[ 이야기로 아주 쉽게 배우는 삼각함수 ] 1. 각도와 삼각형.




원문 표기.


수학이나 과학과 관련된 번역물을 보면서 안타까운 것 중의 하나는 우리 말로 된 용어들의 원문 표기를 잘 안 한다는 것이다. Graphics 관련 일을 하다가 보면 외국 article 들을 보는 경우가 많은데, 수학 관련 용어들이 나올 때마다 그것이 무엇인지 이해하기 어려운 경우가 많다. 요즘같은 global 시대에는 왠만하면 우리 나라에서 만든 용어가 아닌 용어들은 원문을 병기해 줬으면 하는 바램이다.


  • 직선 : straight line.
  • 반직선 : ray; half line.
  • 각, 각도 : angle
  • 꼭지점 : apex; vertex; angular point.
  • 예각 : acute angle.
  • 둔각 : obtuse angle.
  • 평각 : straight angle.
  • 호도법 : circular measure; circular method.
  • 선분 : segment( of a line ); line segment.
  • 밑변 : base; base line; bottom side of a polygon.
  • 너비 : width.
  • 높이 : height.
  • 빗변 : hypotenuse; oblique side.
  • 합동 삼각형 : combination triangle.
  • 닮은꼴 삼각형 : similar triangle.
  • 호 : arc.
  • 여각 : complementary angle.
  • 보각 : supplementary angle.

참고로 180 도가 넘어 가는 각은 우각이라고 하며, 영어로는 reflex angle 이다. --> reflex 는 '반사 작용' 이라는 뜻인데 이것이 우각인 이유를 잘 모르겠다. 반사 작용 검사할 때 다리를 굽힌 모양 때문인가??? 한자어로는 넉넉할 우( 優 )자이다.


그림1. Reflex. 그림 출처 : 네이버 사전


그런데 reflexed 라는 단어는 '뒤로 젖혀진' 이나 '밖으로 굽은' 이라는 뜻이다.




삼각형은 왜 안정적인가?


좀 물리적인 이야기이지만... 삼각형이 가장 안정적인 이유는 '무게중심center of gravity' 때문이다. 무게중심이 아래쪽에 존재할수록 안정적이다. 길을 가다가 돌에 걸려서 넘어지려고 하면 자기도 모르게 다리를 굽히면서 무게중심을 낮추는 경험을 해 봤을 것이다. 스키나 보드를 탈 때 다리를 굽히는 것도 무게중심을 낮춰 안정성을 높이기 위함이다. 좀 더 들어 가면 회전 관성torque 이라는 개념과도 연결이 된다. 두산 백과의 '무게중심' 항목을 보면 그림으로 잘 설명해 주고 있다.




삼각형의 면적 구하기.


삼각형의 면적을 구하는 공식은 사각형의 넓이를 구하는 공식으로부터 유도된다. 


1. 어떠한 삼각형을 완전히 둘러싸는 사각형을 만들어 보자.


그림 2. 너비가 W 이고 높이가 H 인 삼각형을 둘러 싸는 사각형.


2. 삼각형의 위쪽 꼭지점을 기준으로 수직선을 그어 두개의 사각형으로 나눈다.


그림3. 삼각형의 위쪽 꼭지점을 기준으로 두 개의 사각형을 만듦.


[ 그림 3 ] 을 보면 두 개의 사각형이 생기는데, 각 사각형은 동일한 면적을 가진 두 개의 삼각형( 합동인 삼각형 )으로 나뉜다. 결국 구하고자 하는 삼각형의 면적은 A + B 이다.


이제 실제로 계산을 해 보자.





 

보각과 여각.


보각이라는 것은 합이 180 도가 나오게 하는 각이고, 여각이라는 것은 합이 90 도가 나오게 하는 각이다. 연습문제에서는 여각에 대한 설명이 없이 그냥 구하라고 하고 있는데, 그러면 안 되지 ㅡㅡ;;


[ Honey's Math note ] 블로그의 [ 각, 각의 분류( 평각, 직각, 예각, 둔각, 보각, 여각 ] 을 참조하라.


원문 : 10.1.1.162.1859.pdf


주의 : 번역이 개판이므로 이상하면 원문을 참조하십시오.

주의 : 허락받고 번역한 것이 아니므로 언제든지 내려갈 수 있습니다.

주의 : 가독성을 높이기 위해서 발음이 비슷하거나 잘 알려진 용어는 한글로 표기합니다.

주의 : 이 글은 일부만 번역되어 있으므로 나머지는 원문을 참조하십시오. 




CLIPPING USING HOMOGENEOUS COORDINATES


James F. Blinn

Caltech/JPL


Martin E. NewWell

XEROX/PARC



Abstract


클리핑clipping은 주어진 라인 세그먼트가 출력 화면의 경계 내에서 얼마나 많이 그려지는 지를 판단하는 과정이다. 동차 좌표들homogeneous coordinates은 개체를 표현하고 변환하기 위한 편리한 수학적 장치이다. 그러나 동차 좌표들에 의해 표현되는 공간은 단순한 유클리드 3 차원 공간Euclidean 3-space이 아니다. 사실 그것은 "projective plane" 이라 불리는 위상적인 형태topological shape과 비슷하다. 클리핑 문제는 보통 유클리드 공간과 동차 좌표계에 의해 표현되는 공간의 차이를 무시하고 해결된다. 결론을 말하자면, 이는 그림 생성을 하는 데 에러를 유발하는데, 그 그림에서는 라인이 보여야 함에도 불구하고 안 보이는 것처럼 표시된다. 이 논문은 이러한 경우들에 대해 설명하고 라인 세그먼트들을 올바로 잘라내기 위한 기법들을 기술한다.


1. INTRODUCTION


동차 좌표들은 컴퓨터 그래픽스에서 개체를 표현하고 변환하기에 편리한 수학적 장치로서 오랫동안 사용되어 왔다[ 3 ]. 그러나 동차 좌표들에 의해 제공되는 표현과 연산의 일관성에도 불구하고, 그것들은 보통 완벽하게 사용되지 않는다. 이는 이 기술의 사용법을 명확하게 명시적으로 알려 주는 문서의 부족에 기인한다. Sutherland 와 Hodgman [ 4 ] 은 Polygon Clipping 이라는 논문의 부록으로 이 주제에 대해 약간 다루고 있다. 그 논문은 3 차원 개체를 표현하기 위해 동차 좌표계를 사용하는 방법에 대해 기술하며, 동차 표현이 일관적인 방식으로 변환과 클리핑을 완수하는 방법에 대해서 보여 준다. 그것은 대체로 [ 4 ] 의 부록에 대한 반복이며 거기에 기술된 아이디어의 확장이다.


독자가 동차 좌표계 표현들에 대한 약간의 지식을 가지고 있다고 생각하지만, 다음 절들에서는 이 논문의 뒤에서 사용되는 기본적인 기술과 용어들을 리뷰하고 소개하는 내용을 포함하겠다.


1.1 Homogenous Coordinates


3 차원에서 개체를 표현하고 변환하는 것은 보통 유클리드 좌표계에서 해석적으로 수행된다. 그러므로 3 차원 좌표 ( X, Y, Z ) 는 3 차원에서의 한 점을 표현하기에 충분하다. 회전이나 스케일과 같은 변환은 3x3 행렬에 의해서 표현된다. 이 행렬과 위치 벡터를 곱하는 것은 변환된 위치 벡터를 산출한다. 특정 점들( 특히 무한대에 있는 점들 )과 특정 변환들( 특히 이동 및 원근 투영 행렬 )은 이 방식으로 표현될 수 없다. "동차 좌표"라 불리는 표현은 모든 점과 변환들을 망라할 수 있게 개발되어 왔다. In the scheme, each point is represented in a redundant manner by 4 coordinates. 이 논의에서 그 4 개의 좌표들은 소문자 ( x, y, z, w ) 로 명명될 것이다. 그 redundancy 는 다음과 같은 규칙을 가진다. 점에 대한 동차 표현의 모든 요소들에 ( 0 이 아닌 ) 값을 곱하는 것은 같은 점에 대한 다른 동차 표현이다. 동차 표현으로부터 전통적인 표현[각주:1]을 얻기 위해서는 redundancy 가 제거되어야 하는데, w=0 이 아닐 때 w 로 모든 요소들을 나눔으로써 수행된다. 이는 여전히 같은 점을 의미하지만, w 의 값이 1 이다. 처음 3 개의 요소들은 그 점에 대한 전통적 요소들이며, 대문자 ( X, Y, Z ) 로 표현된다.



w=1 인 모든 동차 점들은 이미 전통적인 형태로 되어 있는 것과 같다. 사실 그렇게 해야 하는 좋은 이유가 있지 않은 한, 모델링되는 개체의 점들은 보통 w=1 로 지정되어 초기화된다. 그러나 이러한 개체들에 특정 변환이 수행되면 w=1 이 아닌 점들이 생성된다. 나누기 연산은 4 차원 공간에서 한 점을 w=1 인 면에 원점을 통과하는 라인을 따라 투영하는 것으로 생각될 수 있다. 우리는 이를 y=z=0 인 ( x, y, z, w ) 부분 공간에서 설명함으로써 보여 준다. 남아 있는 x 와 w 좌표는 figure 1 과 같이 보이게 된다.




같은 실제 점 ( X, Y, Z ) 를 표현하는 모든 동차 좌표 ( x, y, z, w ) 들은 원점과 ( X, Y, Z, 1 ) 을 통과하는 라인 상에 놓여 있다.


1.2. Homogeneous Transformations


동차 좌표 ( x, y, z, w ) 로 표현되는 점 P 는 4x4 행렬 M 을 곱함으로써 이미지의 점 P'=( x', y', z', w' ) 로 변환된다.



그 점의 3D 이미지 상에서의 행렬의 효과를 해석하기 위해서, M 을 다음과 같이 분할하자 :




r 로 표기된 3x3 부분 행렬은 회전과 스케일링을 표현한다. t 로 표기된 1x3 부분 행렬은 이동을 표현한다. p 로 표기된 3x1 부분 행렬은 원근을 표현한다. 점과 마찬가지로 ( 0 이 아닌 ) 동차 변환 행렬의 곱은 같은 변환을 표현한다. 그러므로 s 로 표기된 1x1 부분 행렬은 w 요소가 점에 대해서 가지는 의미처럼 행렬들에 대해 같은 의미를 가진다.


1.3. Line Segments


라인 세그먼트들은 여기에서 매개변수 형식parametric form으로 표현될 것이며, 두 개의 끝점인 P1=( x1, y1, z1, w1 ) 과 P2=( x2, y2, z2,w2 ) 의 가중치 합으로서 표현된다.



매개변수 "a" 는 0 부터 1 의 범위를 가지기 때문에, 생성된 점은 P1 에서 P2 까지 선형적으로 움직인다. 이 세그먼트에서 전통적인 점들의 좌표들을 찾기 위해서, 라인 상의 각 점은 w=1 면에 투영된다. 이것이 figure 2 에 나와 있다.



w=1 인 두 끝점들을 사용해 정의된 세그먼트들에 대해, 모든 보간된 w 값들은 1 이며 그 라인 세그먼트와 그것의 투영은 동일하다. 양수 ( figure 2 에 나온 것처럼 ) w 값을 가진 두 끝점들을 사용해 정의된 세그먼트들에 대해, 유사한 라인이 나타난다. 하지만 w 의 값이 서로 다른 부호를 가진 두 끝점들로 정의된 세그먼트들에 대해서는 특이한 상황이 발생한다. 4 차원에서의 선형 보간에 의해 생성된 세그먼트는 매우 이상하다. 각 점들을 w=1 에 투영함으로써 생성된 세그먼트는 4 차원 공간 세그먼트가 w=0 을 통과하는 곳의 점에서 무한대를 통과할 것이다. 이는 아래에서 P1 과 -P2 를 사용해 설명되고 있다. 그 끝점들은 같은 figure 2 에서 보이는 것과 같은 투영된 점들을 표현한다. 그러나 투영된 라인 세그먼트는 P1 에서 시작해 P2 와 멀어지는 방향으로 진행한다. 그리고 무한대를 통과하고 다른 쪽에서 다시 p2 를 만나게 된다. 이것이 figure 3 에 나와 있다.



라인 세그먼트는 figure 2 의 예에서의 점들의 집합에 대한 complement[각주:2]로 구성된다. 그것은 점 ( X1, Y1, Z1 ) 과 ( X2, Y2, Z2 ) 를 연결하는 다른 방식을 설명한다. 그것은 figure 2 의 "내부interior 라인 세그먼트" 와 반대되는 "외부external 라인 세그먼트" 라고 불릴 것이다. 이러한 종류의 라인들은 실용적인 응용프로그램들에서 원근 변환들의 결과나 커브들을 정의하기 위해 공통적으로 사용되는 기법들의 결과로서 나타날 수 있다. 클리핑 알고리즘에서 문제를 발생시킬 수 있는 부분이 이 외부 라인 세그먼트들이다.


2. CLIPPING


클리핑은 라인 세그먼트에서 화면 경계를 벗어나는 부분을 제거하는 연산이다. 우리는 단순한 클리핑 알고리즘을 설명하는 것으로부터 시작할 것이다. 이 알고리즘은 w>0 인 영역에 대해서만 올바르게 동작할 것이다. so we will initially concern ourselves with this region.


계산을 단순화하기 위해서 경계들을 -1<X<+1 과 -1<Y<+1 로 자르는 것이 편하다. 원하는 개체 윈도우를 이 영역으로 매핑하기 위해서 viewing 변환이 조정될 수 있다. 그래서 클리핑 경계들은 다음과 같은 평면들이다.




동차 표현에서 이들은 다음과 같이 된다 :



혹은 네 개의 동차 평면들이다.



figure 4 에서 xw 평면에서 left 와 right 경계를 살펴 보자.



x=-1 과 x=+1 사이의 w=1 평면상의 영역은 동차 나누기가 수행된 이후에 X 에서의 가시 영역을 표현한다. 빗금친 선으로 표현된 영역의 모든 점들은 이 영역에 투영하며, 그러므로 가시적이다. 만약 다음과 같은 조건을 가진다면 점은 가시적이다.




빗금친 영역의 모든 점들은 이 조건을 만족한다는 것을 기억하라.


만약 라인 세그먼트가 부분적으로는 스크린 안쪽이고 부분적으로는 스크린의 바깥쪽이면, 그것은 동차 클리핑 평면들 중의 하나를 뚫고 갈 것이다. 우리는  교차점을 찾을 필요가 있다. 이는 라인 세그먼트의 매개변수 정의의 "a" 값으로 표현될 수 있다.



라인 세그먼트가 x+z=0 평면을 가로지른다고 가정하자. 이 상황에서 "a" 의 값은 다음과 같다.



w1+x1 의 크기는 P1 점에서 x+w=0 평면까지의 거리에 대한 비율이다. 그러므로 그것은 x+w=0 경계에 대해 P1 의 변환된 상대 좌표로 해석될 수 있다. 이러한 이유로 그것은 "경계 좌표Boundary Coordinate"라고 불린다. 모든 점에 대해 각 클리핑 경계에 대한 경계 좌표가 존재한다.



그러므로 양수 값은 점이 클리핑 평면의 가시적 측면에 존재한다는 것을 의미한다. 예를 들어 라인 (1-a )P1 + aP2 가 왼쪽 경계를 가로지르고 있다면, a=BL1/(BL1-BL2) 이다. 다른 경계들에 대해서 비슷한 표현식이 적용된다.


3. THE HOMOGENEOUS PERSPECTIVE TRANSFORM


외부 라인 세그먼트들은 원근 변환을 사용할 때 나타난다. 원근 투영은 기본적으로 눈의 앞쪽에서 x 와 y 를 z 로 나누는 작업을 한다. 동차 원근 변환은 동차 나누기에 z 나누기를 합침으로써 동차 나누기를 현명하게 사용한다( 이는 반드시 수행되어야만 한다). 가장 단순한 형태는 눈을 ( 0, 0, -1 ) 에 두는 것이다. 그리고 나서 원근 투영을 수행하기 위해서 X 와 Y 를 Z+1 로 나뉜다. 통차 좌표 항에서는 x/w 와 y/w 가 z/(w+1)=(z+w)/w 에 의해 나뉘어야 한다. 이것이 다음과 같이 행렬 형식으로 표현될 수 있다.



이 변환의 효과는 "view cone" radiating 의 경계들을 눈으로부터 같은 직교 투영을 위해 사용되는 동일한 정사영의orthographic 클리핑 경계로 바꾸는 것이다. z/w=0 인 점들은 변하지 않는다. -1<z/w<0 인 점들이 커지는 반면, z/w>0 인 점들은 작아진다. figure 5 를 참조하라.



원근 그림들에서 view cone 에 대해 효율적으로 잘라 내는 과정은 먼저 동차 원근 변환을 적용하고 이전에 정의된 같은 경계들로 잘라냄으로써 수행된다. 물론 이러한 원근 변환에 대한 해석은 비스듬한oblique viewing 평면에 투영하는 것과 같은 특별한 viewing 효과들을 수행하기 위해서 후post-원근 변환들을 사용하는 것도 설명한다. 그러한 투영은 전통적인 원근 투영 후에 클리핑 영역에 대한 투영에서 요청된 일부분을 이동하는 것으로 생각할 수 있다. 그러한 두 변환들의 조합이 비스듬한 viewing cone 의 경계들을 위에서 사용한 같은 클리핑 평면들로 올바르게 매핑하는 결과를 산출한다고 입증될 수 있다.


비록 점의 z 좌표가 원근 투영 후에 즉각적으로 유용하지 않은 것처럼 보일지라도, 그것은 가려진 라인/서피스 계산과 깊이 단서depth cueing를 위해 필요하다. This transform has the important property that it includes z such that straight lines remain straight. Examining the zw plane we see that the transformation is merely a skew along the w axis, figure 6. 



원래 w=1 평면에서 정의된 그 개체들은 변환후에 왜곡된다는 것에 주목하라. 그리고 그것들은 새로운 w=1 평면으로 다시 투영된다. eyepoint 는 ( 0, 0, -1, 0 ) 으로 변환되며, 점은 무한대로 음의 z 방향으로 멀어진다. 양의 z 방향으로 무한하게 먼 점들은 z/w=1 에 투영된다. figure 6 에서 사선으로 칠해진 세 개의 영역에서의 변환의 효과에 주목하라. 일반적으로 z 에서 영역들에 대한 변환들은 다음과 같다 :



눈 뒤에 있는 점들은 "wrapped around" 되며, 이제 z/w > 1 에 존재한다.


이제 라인 세그먼트들 상의 원근 투영의 효과와 그것들이 잘려지는 방식을 고려해 보자. 완전히 눈의 앞쪽에 존재하는 세그먼트들에 대해서는 별 일이 발생하지 않는다. 그러나 한 점은 눈의 앞에 있고 한 점은 눈의 뒤에 있는 상황을 고려해 보자( 임의의 viewing 위치가 허용될 때 일어날 수 있다 ). 원근 변환 이후에 이는 외부 라인 세그먼트가 된다. 그것은 어떤 Z<1  에서 시작해서, 눈을 지나 ( 음의 무한대 Z 에서 ) 음의 Z 방향으로 진행한다. 그리고 양의 Z 로 wrapped around 되며, 어떤 Z>1 에서 끝난다. figure 7 을 참조하라.



두 끝점들이 w=1 평면에 다시 투영되면, 두 끝점은 모두 X 와 Y 에 대해 스크린의 가시 영역 내에 존재할 가능성이 매우 크다. 그럼에도 불구하고 눈 뒤의 점은 매우 명백히 비가시적이라는 것이 진실이다. 더우기 이러한 점들은 내부 라인 세그먼트보다는 외부 라인 세그먼트로 연결될 것이다. 이 경우는 눈 앞쪽에서 시작한 두 개의 정상적인 가시 점들과 구분되기 어렵다( 외부 라인 세그먼트의 끝점들이 z/w=1 평면에 걸쳐 있는 알아낼 수 있는 방법이 없다 ). 이러한 문제들은 w=1 로 다시 투영되기 전에 동차 좌표계에서 모든 세그먼트들을 잘라 냄으로써 해결할 수 있다. 이전의 경우에, 눈을 지나는 라인은 눈을 지나기 전에 화면의 X 가장자리에서 잘려나갈 것이다. figure 8 을 참조하라.



문제를 일으키는 외부 라인 세그먼트 부분들은 left, right, bottom, top 명면들 중의 하나에 의해 잘려 나간다.


X, Y 클리핑 과정은 종종 Z 에서의 클리핑 연산에 의해 보강된다. 이는 주로 Z 좌표의 범위를 제한하기 위한 목적으로 수행된다. 눈과 z=0 평면( 예를 들어 화면 ) 사이의 점들은 실 세계의 매우 적은 영역을 취한다. 하지만 원근 투영 이후에 그것들은 -∞ 에서 0 의 범위로 늘어 난다. 무한대 z 좌표를 가진 점들을 표현할 필요성을 없애기 위해, 우리는 그것들을 어떤 값으로 자르는 것이 아니라 "near" 클리핑 평면을 사용해 z/w 로 잘라낼 수 있다. 첨언하면, Z 에서의 가시 영역을 0<Z<+1 로 정의함으로써 클리핑을 X, Y 클리핑으로 표준화될 수 있다. 실제로 원하는 near 경계와 far 경계의 위치는 z 좌표의 스케일과 이동으로서  변환 행렬에 포함될 수 있다. 그러므로 우리는 두 개의 새로운 클리핑 평면과 두 개의 경계 좌표들을 가지게 된다.



점은 z 클리핑 평면에 대해 두 값이 모두 양수일 때 가시적이다.


The main point of this section is, then, that for our first exposure to external line segments, those formed by the perspective transform, the original clipping algorithm works correctly for lines which remain in the w>0 region and for those which dip into the w<0 region due to the perspective transformation. 그러나 클리핑은 동차 나누기 전에 수행되어야 한다. Z 클리핑을 추가하는 것은 원근 투영 이후에 Z 값의 범위를 제한하는데 유용하지만, 그것은 눈 뒤의 라인 세그먼트를 올바로 제거하기 위해서 꼭 필요한 것은 아니다.


5. RATIONAL PARAMETRIC CURVES


하략...


  1. conventional representation, 유클리드 3 차원 좌표계 표현, 이 논문에서 대문자로 된 ( X, Y, Z ) [본문으로]
  2. 집합에서의 complement 를 의미하는 듯. http://en.wikipedia.org/wiki/Complement_(set_theory) [본문으로]

'물리_수학_기하학' 카테고리의 다른 글

중력과 수직항력  (10) 2019.07.07
장력( Tension )  (13) 2019.06.26
Matrix major & multiplication  (2) 2018.08.12
[ 번역 ] The Perils of Floating Point  (0) 2018.08.10
[ 번역 ] Depth Precision Visualized  (11) 2017.06.04
[ 번역 ] Moment of inertia 일부 번역  (0) 2016.11.07
[ 번역 ] 캐릭터 애니메이션 : 스켈레톤과 역운동학  (0) 2016.10.01
모멘트( moment )  (22) 2016.01.06
Curve  (0) 2015.10.04
Arc length of curve  (0) 2012.09.21

주의 : 오류가 있을 수도 있습니다. 이상하면 참고 자료들을 참조하세요.


Motive.


일반적으로 검기같은 것을 구현하거나 path 를 만들 때 매개변수화된 커브( parameterized curve )를 사용한다. 독자들은 여러 가지 종류의 커브에 대해 들어 보거나 구현한 적이 있을 것이다. 아티스트에게 툴을 사용해서 커브를 구성하라고 할 때 가장 직관적인 형태로 편집할 수 있는 것은 Catmull-Rom spline 이다. Catmull-Rom spline 으로 구글링을 해 보니 어떤 분이 Catmull-Rom spline 에 대해서 잘 정리하셨다. 혹시 Catmull-Rom spline 이 무엇인지 모른다면 다음 링크를 참조하라.


http://blog.naver.com/PostView.nhn?blogId=sorkelf&logNo=40154552485


Catmull-Rom spline 도 그렇고 다른 커브들도 그렇지만 매개변수화된 커브들은 [ 0, 1 ] 의 시간 사이에서 보간되어 최종 위치를 계산하게 된다. 그런데 이 커브들의 동작을 살펴 보면 제어 점의 거리가 멀면 긴 커브를 생성하는데, 제어점을 지나는 시간은 동일하다. 예를 들어 두 개의 구간( segment )을 가진다고 하면 각 구간을 지나가는 시간은 동일하다.


예를 들어 커브를 매개변수 t 에 대해서 매개변수화했고, t 가 1.0 일 때 1초가 지나도록 설정했다고 하자. 그러면 아래 그림과 같이 두 개의 구간으로 이루어진 Catmull-Rom spline 을 지나가는 데는 2초가 걸린다( 물론 아래 그림은 대충 그린 것이기 때문에 실제의 모양과는 차이가 있다 ).

여기에서 두 가지 질문을 던질 수 있다.

  • 0.4 초까지 진행했을 때 얼마의 거리를 이동했을까?
  • 두 구간을 지나가는데 동일한 속도로 이동하게 하려면 어떻게 해야 할까?

이 두 가지 문제를 풀기 위해서 공통적으로 필요한 것이 호의 길이( arc length )를 구하는 것이다.


Arc Length.


커브에서 arc length 라는 것은 곡선을 직선으로 폈을 때의 길이를 의미한다. 즉 커브를 따라 움직였을 때의 거리라고 할 수 있다. 3차원에서의 커브는 vectorized function 이라고 할 수 있으며, 이 커브의 arc length 를 구하기 위한 방법은 아래 링크에 나와 있다.


Arc Length And Curvature.



식을 보면 엄청나게 복잡해 보인다. 위의 식은 다음과 같이 풀어 볼 수 있다.

  • 매개변수화된 커브의 x, y, z 성분을 시간 t 에 대해 미분한다.
  • 각 미분결과를 제곱한 다음에 더하고 그 제곱근을 구한다.
  • a 와 b 구간에서 그 제곱근들을 적분한다.

손발이 마구 오그라드는 것을 느낄 수 있을 것이다.


하지만 개념을 이해하면 매우 단순한 알고리즘이다. 일단 2차원에서 생각하는 것이 편하기 때문에 2차원에서 설명하도록 하겠다. 

아래 그림과 같은 커브가 있다고 하자. 커브의 어떤 구간에서 dx 만큼 이동할 때의 변화량은 dy 이다. 우리가 알고 있는 미분이 바로 아래 그림과 같다.

그런데 문제는 우리가 매개변수화된 커브, 즉 vectorized function 을 가지고 있다는 것이다. 그러면 이 vectorized function 을 미분한다는 의미는 무엇일까? 시간축 개념을 도입해 보도록 하자.


이제 질문에 답을 할 수가 있다. dt 만큼의 시간이 지났을 때 각 성분별로 dx, dy 만큼의 변화량을 가지고 있다고 표현할 수 있다. 이제 이야기가 좀 쉬워진다. 그러면 저 위의 빨간 선의 거리는 어떻게 구하는가?



매우 단순한 2 차원 상에서 거리 구하기 문제이다. 그렇다면 3 차원 상에서도 마찬가지로 확장해 볼 수 있다.



자 이제 "아주 짧은 시간" t 만큼 이동한 거리를 구했으니, [ a, b ] 구간에서 이를 모두 더하면 호의 길이를 구할 수 있다. 이게 바로 적분식으로 표현되어 있다. 이제 다시 식을 살펴 보자. 쉽게 이해가 갈 것이다.



어렵게 생긴 표현식들도 의미를 곰곰히 따져 보면 쉽게 이해할 수 있다. 어떤 시간에 이동한 거리를 구하는 것과 일정한 속도로 이동하는 것은 각 구간의 arc length 를 구한 다음에 적절한 연산을 수행하면 구할 수 있다. 이는 독자의 상상에 맡기도록 하겠다.


식의 마지막에 v(t) 라는 것이 나와 있다. 이는 속도( velocity )를 의미한다. 단위 시간당 각 축에 대한 변화량은 단위 시간당 속도라는 의미와 같다. 즉 우리는 속도를 알고 있을 때 그것을 적분하면 이동 거리를 알 수 있다고 생각할 수 있다.

+ Recent posts