1 00:00:05.619 --> 00:00:09.900 게임 기본편 게임을 지탱하는 기초 수학 6 벡터의 내적 2 00:00:09.900 --> 00:00:12.141 CC사관학교 3 00:00:27.639 --> 00:00:29.200 여러분 안녕하십니까 4 00:00:29.201 --> 00:00:31.101 게임소확의 이득우입니다 5 00:00:31.101 --> 00:00:34.360 이번 시간에는 내적에 대해 알아보도록 하겠습니다 6 00:00:34.680 --> 00:00:36.441 내적이란 무엇인지 7 00:00:36.442 --> 00:00:41.171 그리고 내적을 어떤식으로 활용할 수 있는지에 대해서 소개해볼까 합니다 8 00:00:41.172 --> 00:00:45.067 벡터 내적의 개념 9 00:00:45.599 --> 00:00:48.401 자 벡터의 내적이라고 하는 것은 10 00:00:48.401 --> 00:00:54.769 벡터상에서 동작하는 어떤 특별한 연산 방법이라고 할 수가 있는데요 11 00:00:55.153 --> 00:01:00.320 앞서서 우리가 벡터에 대해서 기본적인 연산에 대해서 알아봤었죠 12 00:01:00.560 --> 00:01:04.170 벡터와 벡터의 덧셈,벡터와 스칼라의 곱셈 13 00:01:04.170 --> 00:01:08.806 이 두가지가 바로 벡터가 가지고 있는 기본 연산이었고 14 00:01:08.806 --> 00:01:14.360 이 기본 연산을 사용해 우리는 선형 조합식을 만들어서 15 00:01:14.360 --> 00:01:18.220 새로운 벡터를 벡터 공간 안에서 생성할 수가 있었습니다 16 00:01:18.879 --> 00:01:22.721 하지만 이런 기본 연산만 가지고 벡터를 활용하기에는 17 00:01:22.721 --> 00:01:24.664 조금 부족한 부분이 있는데요 18 00:01:25.080 --> 00:01:31.143 그래서 수학자들이 유용하게 사용할 수 있는 특별한 연산을 발견해서 19 00:01:31.144 --> 00:01:35.092 이것들이 지금 응용 단계에서 굉장히 많이 활용이 되고 있습니다 20 00:01:35.440 --> 00:01:38.400 그 두가지가 벡터의 내적과 외적 인데요 21 00:01:38.687 --> 00:01:42.927 이번 시간에는 그 중에 하나인 내적 연산에 대해서 알아보는 겁니다 22 00:01:44.740 --> 00:01:49.341 유용한 연산들은 어떤 것들이 있는지 정리해 봤는데 23 00:01:49.342 --> 00:01:50.843 벡터와 벡터의 곱셈 24 00:01:50.844 --> 00:01:55.143 즉,각 요소들끼리 곱하는 연산도 하나 생각해 볼 수가 있습니다 25 00:01:55.423 --> 00:02:01.123 근데 이것은 주로 이제 색상끼리 혼합할 때 많이 사용하는 방법이고 26 00:02:02.144 --> 00:02:05.749 그 외적인 부분에서 벡터를 응용할 때는 그렇게 사용되지는 않습니다 27 00:02:06.203 --> 00:02:09.381 그 다음에 지금 이제 이야기할 벡터의 내적은 28 00:02:09.382 --> 00:02:14.741 거의 대부분의 벡터의 응용 과정에서 많이 사용한다 29 00:02:14.980 --> 00:02:20.857 거의 한 70-80%는 거의 벡터 내적으로 시작한다고 해도 과언이 아닐 정도로 30 00:02:20.858 --> 00:02:25.803 모든 응용 단계에서 항상 사용되는 중요한 연산이라고 할 수가 있습니다 31 00:02:26.219 --> 00:02:28.641 그 다음에 벡터의 외적이란 연산이 있는데요 32 00:02:28.641 --> 00:02:32.311 이것은 3차원에서만 성립하는 특별한 연산이고 33 00:02:32.600 --> 00:02:35.221 이후에 우리가 3차원을 진행할 때 34 00:02:35.221 --> 00:02:38.051 이때 외적에 대해서 다시 설명을 드릴 예정입니다 35 00:02:39.300 --> 00:02:42.780 자 그러면 오늘의 주제인 벡터의 내적에 대해서 알아보겠는데요 36 00:02:43.099 --> 00:02:46.419 벡터의 내적은 보시는 것처럼 37 00:02:46.420 --> 00:02:49.103 이렇게 2차원 벡터 2개가 있을때 38 00:02:49.319 --> 00:02:50.401 각 요소 39 00:02:50.742 --> 00:02:54.234 x 요소들끼리 곱하고 y 요소끼리 곱한 다음에 40 00:02:54.234 --> 00:02:57.909 서로 더해주는 형태의 연산을 의미합니다 41 00:02:58.240 --> 00:03:03.001 지금 예제에서는 2차원에 대한 부분만 제가 예를 들었는데 42 00:03:03.002 --> 00:03:05.212 이건 3차원 4차원 5차원 43 00:03:05.212 --> 00:03:08.123 이렇게 n 차원으로 쭉 늘어나도 44 00:03:08.123 --> 00:03:11.278 같은 요소들끼리 곱한 다음에 더하기 때문에 45 00:03:11.279 --> 00:03:15.092 어떤 차원의 벡터든지 상관없이 동작하는 46 00:03:15.093 --> 00:03:16.893 아주 평범한 연산이고 47 00:03:17.340 --> 00:03:18.642 여기서 알 수 있는 것은 48 00:03:18.642 --> 00:03:23.153 벡터 내적은 각 요소들을 곱한 다음에 더해주기 때문에 49 00:03:23.162 --> 00:03:27.776 항상 결과 값은 스칼라가 되는 것을 알 수 있습니다 50 00:03:29.479 --> 00:03:33.821 자 이러한 벡터 내적이 가지고 있는 연산의 성질에 대해서 51 00:03:33.821 --> 00:03:35.240 제가 정리해 봤습니다 52 00:03:35.544 --> 00:03:37.924 먼저 교환법칙이 성립합니다 53 00:03:38.184 --> 00:03:43.141 당연히 스칼라의 곱셈과 덧셈으로 진행이 되기 때문에 54 00:03:43.381 --> 00:03:47.720 교환법칙이 성립하는 더셈 연산과 곱셈 연산에 대해서 55 00:03:47.721 --> 00:03:52.141 교환법칙이 성립하는 구조의 특징상 56 00:03:52.141 --> 00:03:57.260 벡터 내적은 교환법칙이 성립한다고 할 수가 있습니다 57 00:03:57.780 --> 00:04:00.041 그 다음에는 결합법칙인데요 58 00:04:00.352 --> 00:04:03.011 사실 결합법칙이라고 부르기 애매한게 59 00:04:03.012 --> 00:04:08.151 이미 내적을 한 순간에는 스칼라 값으로 변하기 때문에 60 00:04:08.640 --> 00:04:11.500 이것이 동등한 연산이라고 보기는 어렵습니다 61 00:04:11.501 --> 00:04:14.221 여기서 스칼라 값이 나왔기 때문에 62 00:04:14.222 --> 00:04:16.538 스칼라 벡터 연산이 되고요 63 00:04:16.839 --> 00:04:20.776 이 또한 마찬가지로 스칼라와 벡터 연산으로 되기 때문에 64 00:04:21.157 --> 00:04:25.936 어쨌든 지금까지 우리가 살펴본 동등한 요소들끼리의 65 00:04:26.177 --> 00:04:30.657 두 번 연속 진행하는 연산 형태가 아니라는 것이죠 66 00:04:31.240 --> 00:04:33.758 그래서 결합법칙은 어쨌든 67 00:04:34.579 --> 00:04:38.244 성격 자체도 성립하지 않고 결과 값도 다르기 때문에 68 00:04:38.604 --> 00:04:40.884 결합법칙은 성립하지 않는다 라고 69 00:04:40.885 --> 00:04:42.626 짤막하게 요약할 수가 있습니다 70 00:04:43.446 --> 00:04:45.721 그렇다면 분배법칙은 어떻게 될까요 71 00:04:46.062 --> 00:04:47.722 분배법칙의 경우에는 72 00:04:47.723 --> 00:04:52.500 어차피 우리가 벡터를 먼저 계산하면 벡터가 되고 73 00:04:52.500 --> 00:04:55.228 이것을 내적하면 스칼라 값이 되고요 74 00:04:55.640 --> 00:04:58.689 마찬가지로 우리가 각각을 내적을 진행하면 75 00:04:58.689 --> 00:05:00.894 스칼라와 스칼라의 덧셈이 되는데 76 00:05:01.055 --> 00:05:04.915 이것은 이제 결과가 동일하게 진행이 됩니다 77 00:05:04.915 --> 00:05:07.640 그렇기 때문에 분배법칙은 성립한다 78 00:05:07.640 --> 00:05:09.192 이렇게 정리할 수가 있겠습니다 79 00:05:09.559 --> 00:05:11.220 다시 정리하면 80 00:05:11.221 --> 00:05:16.116 벡터 내적은 교환법칙이 성립하지만 결합법칙은 성립하지 않고 81 00:05:16.302 --> 00:05:19.702 분배법칙은 성립한다로 요약할 수가 있겠습니다 82 00:05:21.920 --> 00:05:28.326 이렇게 분배법칙이 성립하는 벡터 내적의 식을 83 00:05:28.327 --> 00:05:31.233 우리가 특징을 살펴보면 84 00:05:31.497 --> 00:05:35.536 같은 벡터의 덧셈을 내적한다라고 하면 85 00:05:36.000 --> 00:05:40.302 여기서는 u u와 u.u와 u.v 86 00:05:40.502 --> 00:05:42.980 v.u와 v.v 87 00:05:42.981 --> 00:05:47.255 그런데 교환법칙이 성립하기 때문에 u.v와 v.u는 같기 때문에 88 00:05:47.444 --> 00:05:53.303 u.u, v.v, e.u.v의 형태로 나오게 되고요 89 00:05:53.920 --> 00:05:57.981 여기서 우리가 같은 벡터를 내적하는 결과에 대해서 90 00:05:57.981 --> 00:05:59.501 잠깐 살펴볼 텐데요 91 00:05:59.920 --> 00:06:03.520 같은 벡터를 내적하게 되면 여기서 보는 것처럼 92 00:06:03.890 --> 00:06:07.390 같은 요소끼리 당연히 제곱 형태가 되겠죠 93 00:06:07.390 --> 00:06:10.781 그리고 더하고 다시 두 번째 요소를 제곱하고 94 00:06:11.002 --> 00:06:14.681 세 번째 요소를 제곱하고 네 번째 요소를 제곱해서 더하는 95 00:06:14.682 --> 00:06:16.270 이런 형태가 만들어지는데 96 00:06:16.600 --> 00:06:18.669 이것은 우리가 앞서 살펴본 97 00:06:18.669 --> 00:06:24.063 벡터의 노름을 제곱하는 결과라고 볼 수가 있습니다 98 00:06:24.359 --> 00:06:29.321 그렇기 때문에 우리가 같은 벡터를 내적한다는 것은 99 00:06:29.322 --> 00:06:31.756 노름의 제곱, 벡터 크기의 제곱 100 00:06:31.756 --> 00:06:35.288 벡터 길이의 제곱의 결과를 항상 가져오게 됩니다 101 00:06:35.674 --> 00:06:39.480 그래서 위에 수식은 우리가 이렇게 바꿨을 수가 있는 거죠 102 00:06:39.800 --> 00:06:41.901 크기의 제곱으로 바꿨으면 103 00:06:42.137 --> 00:06:44.737 벡터 u 크기의 노름의 제곱 104 00:06:44.917 --> 00:06:47.237 벡터 v 노름의 제곱 105 00:06:47.237 --> 00:06:53.166 그 다음에 e.u.v의 형태로 진행이 된다 106 00:06:53.166 --> 00:06:55.660 이렇게 수식이 만들어지게 되고 107 00:06:55.901 --> 00:06:59.301 이 수식은 이후에 또 유용하게 사용되니까 108 00:06:59.301 --> 00:07:01.696 잠깐 언급해 봤습니다 109 00:07:03.160 --> 00:07:05.557 그래서 잠깐 정리한 것은 110 00:07:06.309 --> 00:07:09.709 벡터 v의 노름은 x제곱과 y제곱 111 00:07:09.709 --> 00:07:13.229 각 요소를 제곱한 것에 루트를 씌운 형태인데 112 00:07:14.313 --> 00:07:18.152 같은 벡터를 제곱한 것은 이것을 제곱하는 결과가 항상 나오기 때문에 113 00:07:19.188 --> 00:07:20.429 어떤 벡터 114 00:07:20.549 --> 00:07:26.457 n차원의 같은 벡터를 내적하면 노름의 제곱이 된다 115 00:07:26.457 --> 00:07:29.020 이렇게 결론이 나오게 됩니다 116 00:07:29.880 --> 00:07:32.220 그러면 이러한 성질을 활용해서 117 00:07:32.476 --> 00:07:34.895 벡터 내적을 어떻게 사용하냐면요 118 00:07:35.320 --> 00:07:38.381 먼저 벡터 내적이 가지고 있는 성질을 파악해야 되는데 119 00:07:38.381 --> 00:07:41.396 이것은 삼각함수와 밀접한 관계가 있습니다 120 00:07:41.640 --> 00:07:45.559 어떤 삼각함수냐면 코사인 함수와 밀접한 관련이 있어요 121 00:07:46.119 --> 00:07:49.621 그래서 벡터 내적에서 사실 122 00:07:50.762 --> 00:07:53.953 우리가 실제로 게임을 제작할 때 123 00:07:53.954 --> 00:07:56.536 응용할 때 가장 많이 사용하는 이유가 124 00:07:56.920 --> 00:08:00.041 벡터 내적이 코사인 함수와 관련이 있기 때문에 125 00:08:00.310 --> 00:08:03.709 이 코사인 함수가 가지고 있는 성질을 응용해서 126 00:08:03.710 --> 00:08:07.630 다양한 상황에서 우리가 이걸 적용할 수가 있게 된다는 것이죠 127 00:08:08.480 --> 00:08:10.719 자 그래서 그 공식이 어떻게 되냐면요 128 00:08:10.859 --> 00:08:14.215 a와 b, 벡터 a와 벡터 b의 내적은 129 00:08:14.614 --> 00:08:17.913 벡터 a의 크기와 벡터 b의 크기에 130 00:08:17.913 --> 00:08:23.147 벡터 a와 b가 이루는 사이각의 코사인 세타를 곱하는 것과 131 00:08:23.147 --> 00:08:26.547 동일하다는 수식이 있기 때문에 가능한 겁니다 132 00:08:26.719 --> 00:08:30.799 자,이 수식이 어떻게 해서 유도되는지 잠깐 살펴보도록 하겠습니다 133 00:08:31.539 --> 00:08:35.419 먼저 임의의 삼각형을 하나 그려보겠습니다 134 00:08:35.419 --> 00:08:38.259 그래서 점 A,B,C가 있고 135 00:08:38.260 --> 00:08:41.400 점 B를 원점에다 두었다고 생각을 하고요 136 00:08:41.699 --> 00:08:45.980 그 다음에 점 B에서 점A로 향하는 벡터를 벡터 C 137 00:08:46.241 --> 00:08:49.214 점B에서 점C로 향하는 벡터를 벡터a 138 00:08:49.214 --> 00:08:58.320 그러니까 점의 건너편에 있는 변을 우리가 벡터 a 라고 하고 139 00:08:58.320 --> 00:09:01.379 그 다음에 이쪽은 벡터 b 가 되겠죠 140 00:09:02.039 --> 00:09:04.621 이런 형태로 구성을 하게 되면 141 00:09:05.591 --> 00:09:10.351 이제 이 삼각형을 사용해 가지고 우리가 어떻게 저 위에 142 00:09:10.352 --> 00:09:13.584 코사인 공식이 유도되는지 한번 알아보도록 하겠습니다 143 00:09:14.000 --> 00:09:19.040 점B를 원점에 두고 변을 벡터로 설정할 때 각 점의 위치는 144 00:09:19.040 --> 00:09:22.773 앞서서도 얘기했지만 b를 0,0 이라고 했을 때 145 00:09:23.119 --> 00:09:30.530 점 c의 경우에는 평행하게 x축에 일치시킨다면 146 00:09:31.383 --> 00:09:38.574 점 A의 건너편에 해당하는 변인 벡터 a 가 될 거고 147 00:09:38.574 --> 00:09:41.901 그 다음에 양의 방향으로 우리가 설정하면 148 00:09:41.902 --> 00:09:43.948 항상 절대값을 취해 가지고 149 00:09:43.949 --> 00:09:45.627 벡터 a의 노름이 되겠죠 150 00:09:45.627 --> 00:09:46.547 길이가 되겠죠 151 00:09:46.840 --> 00:09:50.460 그래서 벡터 a 노름,0이 될 거고요 152 00:09:50.880 --> 00:09:53.860 그 다음에 점 A의 좌표 같은 경우에는 153 00:09:54.150 --> 00:09:56.670 지금 우리가 사잇각을 154 00:09:57.242 --> 00:10:04.801 벡터 c와 벡터 a의 사잇각을 각 베타라고 가정했을 때 155 00:10:04.801 --> 00:10:09.284 여기에서 높이를 우리가 구해야 되는데 156 00:10:09.285 --> 00:10:16.129 이것은 우리가 단위1 삼각함수의 공식을 했을 때 157 00:10:16.129 --> 00:10:22.341 단위1에서 밑에 어떤 빗변 벡터가 가지고 있는 158 00:10:22.341 --> 00:10:25.460 x축 성분은 코사인 세타 159 00:10:25.460 --> 00:10:27.739 y축 성분은 사인 세타였고 160 00:10:27.739 --> 00:10:33.580 그 다음에 그 반지름이 r이면 r사인세타,r코사인세타라고 이야기했죠 161 00:10:34.042 --> 00:10:41.680 그러면 여기에서 빗변 벡터 c의 크기를 우리가 알 수 있다면 162 00:10:42.500 --> 00:10:44.620 각은 베타라고 나와 있으니까 163 00:10:44.882 --> 00:10:49.302 점A의 좌표는 C의 노름의 코사인 베타 164 00:10:49.562 --> 00:10:51.617 C노름의 사인 베타가 됩니다 165 00:10:52.959 --> 00:10:56.359 이러한 기본적으로 점의 위치가 정해져 있다면 166 00:10:56.360 --> 00:10:59.344 우리가 벡터 b를 계산을 해 볼 텐데요 167 00:10:59.679 --> 00:11:02.181 벡터 b는 점C에서 점A 168 00:11:03.125 --> 00:11:06.384 점A에서 점C로 향하는 벡터라고 할 수가 있고요 169 00:11:06.760 --> 00:11:12.179 이것의 좌표는 위에 있는 것을 참고해서 다음과 같이 구할 수가 있습니다 170 00:11:13.019 --> 00:11:15.500 그렇다면 이것을 우리가 제곱한 171 00:11:16.230 --> 00:11:21.229 벡터 b의 크기를 먼저 구한 다음에 이것을 제곱한 결과를 살펴볼 텐데요 172 00:11:21.599 --> 00:11:25.440 각각 요소를 제곱하면 이런 형태로 전개가 되고 173 00:11:25.640 --> 00:11:31.090 결과적으로는 벡터 a의 노름의 제곱과 벡터 c의 노름의 제곱 174 00:11:31.091 --> 00:11:35.681 그 다음에 2벡터 a와 벡터 c의 노름을 서로 곱한 것에 175 00:11:35.682 --> 00:11:39.276 사잇각 코사인 베타를 구해준 결과가 나옵니다 176 00:11:39.880 --> 00:11:44.632 그런데 벡터 b의 크기를 제곱했다는 것은 177 00:11:44.633 --> 00:11:50.269 이것은 벡터 b와 벡터 b를 서로 내적한 결과랑 동일하다는 것이죠 178 00:11:50.394 --> 00:11:55.180 그래서 이 결과는 벡터 b와 벡터 b를 서로 내적한 겁니다 179 00:11:55.440 --> 00:11:59.680 벡터 a에서 벡터 c로 바꿔서 표현할 수가 있는데요 180 00:11:59.980 --> 00:12:02.020 그것들을 서로 내적한 것이죠 181 00:12:02.021 --> 00:12:04.048 그것들을 서로 내적한 것이고 182 00:12:04.048 --> 00:12:05.581 자,이 결과는 183 00:12:06.755 --> 00:12:12.015 벡터 a의 노름의 제곱, 벡터 c의 노름의 제곱에다가 마이너스가 붙여서 184 00:12:12.620 --> 00:12:23.060 2ac가 마이너스 2 벡터 a와 벡터 c의 내적 a.c로 정리가 됩니다 185 00:12:23.060 --> 00:12:26.639 이 값이 뭐랑 같냐면 위에 값이랑 같다는 거죠 186 00:12:26.919 --> 00:12:28.601 그렇다면은 여기에서 187 00:12:28.862 --> 00:12:32.423 a의 노름의 제곱과 c 노름의 제곱이 상쇄가 되면서, 188 00:12:32.423 --> 00:12:33.400 소거가 되면서 189 00:12:33.640 --> 00:12:35.834 결과적으로 a와 c 190 00:12:35.834 --> 00:12:43.791 a.c는 a의 크기와 c의 크기의 사잇각 코사인 베타를 곱한 것과 191 00:12:45.730 --> 00:12:49.520 그 값이 동일하다라고 우리가 이해할 수가 있게 됩니다 192 00:12:49.521 --> 00:12:51.681 이런 결론을 만들어낼 수가 있게 됩니다 193 00:12:52.760 --> 00:12:58.380 그래서 이런 코사인 삼각함수의 194 00:12:59.006 --> 00:13:03.745 코사인 공식을 내적을 사용해서 유도해 봤고요 195 00:13:04.119 --> 00:13:06.924 여기서 두 벡터의 크기가 1이라면은 196 00:13:06.924 --> 00:13:08.396 크기가 1이기 때문에 197 00:13:08.396 --> 00:13:11.398 더욱 더 간략하게 코사인 세타 198 00:13:11.399 --> 00:13:14.715 사잇각에 대한 코사인 값으로 귀결이 됩니다 199 00:13:14.968 --> 00:13:17.520 이 부분이 굉장히 유용하게 사용하니까 200 00:13:17.521 --> 00:13:22.679 계속해서 코사인 함수와 비례하는 내적의 성질을 201 00:13:22.679 --> 00:13:24.640 우리가 계속 주목해 주면 되겠습니다 202 00:13:26.120 --> 00:13:31.661 자,이러한 코사인 함수가 가지고 있는 성질을 어떻게 응용할 수 있는지 203 00:13:31.661 --> 00:13:33.936 가장 대표적인 방법으로는 204 00:13:33.937 --> 00:13:35.337 직교성 판별입니다 205 00:13:35.337 --> 00:13:40.099 두 벡터가 서로 직각으로 구성되어 있는지를 판별하는 것인데요 206 00:13:40.659 --> 00:13:44.102 여기서 내적의 값이 0이 되는 경우는 207 00:13:44.102 --> 00:13:49.101 결국에는 코사인 세타 값이 0이 되는 경우 밖에 존재하지 않겠죠 208 00:13:49.101 --> 00:13:52.524 만약에 벡터의 크기가 있다고 하면 209 00:13:52.525 --> 00:13:53.779 0이 아니라고 하면 210 00:13:53.779 --> 00:13:56.468 당연히 코사인 세타가 0일 때만 211 00:13:56.468 --> 00:13:58.308 이 값이 0이 나오게 되겠죠 212 00:13:58.760 --> 00:14:01.521 그렇다면 언제 코사인 세타가 0이 나오냐면 213 00:14:01.521 --> 00:14:03.281 90도와 270도 214 00:14:03.281 --> 00:14:07.621 즉 90도와 마이너스 90도일 때 코사인 세타가 0이 나오고요 215 00:14:07.621 --> 00:14:12.760 그것은 바로 다음과 같이 두 벡터가 서로 직교할때만 216 00:14:12.761 --> 00:14:15.121 0이 나온다는 성질을 가지게 됩니다 217 00:14:16.320 --> 00:14:22.330 그래서 우리가 벡터 내적이 가지는 직교성을 사용한다면요 218 00:14:22.799 --> 00:14:24.740 무조건 0이 219 00:14:24.740 --> 00:14:30.264 어떤 두 벡터를 내적했을 때 0이 나왔다 220 00:14:30.919 --> 00:14:32.341 그러면 우리가 그냥 221 00:14:32.341 --> 00:14:36.073 이 두 벡터는 서로 직각이네 라고 판단할 수가 있는 겁니다 222 00:14:36.440 --> 00:14:41.079 표준 기저 벡터 1,0과 0,1을 서로 내적하면 어떻게 될까요 223 00:14:41.080 --> 00:14:44.292 1 곱하기 0 더하기 0 곱하기 1이 되니까 224 00:14:44.599 --> 00:14:46.281 당연히 0이 나오죠 225 00:14:46.281 --> 00:14:49.856 그렇다면 이것은 서로 직교한다라고 우리가 파악할 수가 있는 거고요 226 00:14:50.320 --> 00:14:53.701 여기서 각 세타만큼 각각 돌렸을 때 227 00:14:53.702 --> 00:14:56.851 당연히 직교하고 있던 벡터를 세타만큼 돌렸으니까 228 00:14:56.851 --> 00:14:59.757 우리는 얘도 직교한다는 결론을 내릴 수 있지만 229 00:15:00.000 --> 00:15:05.900 그냥 이런 시각적인 상황을 인지하지 않고 230 00:15:06.180 --> 00:15:08.925 그냥 두 벡터의 값을 내적시켜 버리면 됩니다 231 00:15:09.679 --> 00:15:11.800 그러면 코사인 세타,사인 세타와 232 00:15:11.800 --> 00:15:13.988 마이너스 사인 세타, 코사인 세타를 233 00:15:13.988 --> 00:15:15.777 그냥 서로 내적 해보면 234 00:15:16.119 --> 00:15:18.820 마이너스 코사인 세타, 사인 세타 235 00:15:19.007 --> 00:15:22.487 사인 세타, 코사인 세타가 되기 때문에 0이 되는 것을 알 수가 있죠 236 00:15:22.487 --> 00:15:25.787 그래서 이 두 가지의 벡터는 237 00:15:26.027 --> 00:15:30.260 회전을 시킨 두 벡터는 서로 직교한다는 결론을 내릴 수가 있습니다 238 00:15:31.100 --> 00:15:33.600 여기서 이제 조금 더 발전을 시키면요 239 00:15:36.127 --> 00:15:38.067 리지드 트랜스포메이션이라는 게 있습니다 240 00:15:38.068 --> 00:15:38.988 이게 뭐냐면 241 00:15:38.989 --> 00:15:42.589 리지드는 굳건하다, 단단하다 라는 뜻이죠 242 00:15:42.589 --> 00:15:46.721 그래서 이것은 물리학에서 강체라고 이야기하고 243 00:15:46.721 --> 00:15:50.673 물체의 모습이 변형되지 않는 어떤 최소 단위를 의미하는데 244 00:15:51.320 --> 00:15:54.261 아무튼 리지드 바디 245 00:15:54.261 --> 00:15:56.881 물리학에서는 리지드 바디라고 이야기하는 246 00:15:56.882 --> 00:15:59.439 게임 개발에서는 많이들 들어봤을 겁니다 247 00:15:59.439 --> 00:16:02.761 그런 개념하고 비슷하다고 생각하시면 될 거예요 248 00:16:03.326 --> 00:16:06.265 이 리지드 트랜스포메이션이라고 하는 것은 249 00:16:06.880 --> 00:16:10.400 결국에는 어떤 물체가 변환이 일어났을 때 250 00:16:11.141 --> 00:16:14.701 그 모습이 그대로 유지되는 변환을 의미합니다 251 00:16:14.701 --> 00:16:16.120 리지드 트랜스포메이션 252 00:16:16.121 --> 00:16:21.340 그래서 이 리지드 트랜스포메이션이 되는 변환의 조건은 253 00:16:22.679 --> 00:16:28.420 변환이 됐을 때 변환 이후에 기저 벡터의 크기가 1을 가지고 있고요 254 00:16:28.420 --> 00:16:32.472 그 다음에 모든 기저 벡터가 서로 직교하고 있어야 됩니다 255 00:16:32.512 --> 00:16:36.880 왜냐하면은 원공간의 벡터들이 서로 직교하고 있기 때문에 256 00:16:37.015 --> 00:16:40.714 변환된 이후에도 서로 직교하는 그 성질을 가지고 있어야 되죠 257 00:16:41.239 --> 00:16:44.660 그 다음에 마지막으로 행렬식 값이 1이 되어야 됩니다 258 00:16:44.841 --> 00:16:47.739 뒤집히는 경우를 우리가 파악해서 방지하기 위해서 259 00:16:48.120 --> 00:16:54.695 디터미넌트 만약에 어떤 함수 행렬이 있을때 260 00:16:54.695 --> 00:16:57.471 그 행렬식 값이 1인 것을 우리가 확인하면 261 00:16:57.739 --> 00:16:58.959 리지드 트랜스포메이션 262 00:16:58.960 --> 00:17:01.880 얘는 모습이 절대 변하지 않는다라는 걸 263 00:17:01.880 --> 00:17:03.244 보장할 수가 있는데요 264 00:17:03.460 --> 00:17:06.889 이것을 만족하는 대표적인 변환이 회전변환 입니다 265 00:17:07.318 --> 00:17:09.258 여기 회전변환을 살펴보면요 266 00:17:09.579 --> 00:17:13.152 각각에 대해서 우리가 그 벡터의 크기를 구했을 때 267 00:17:13.658 --> 00:17:18.182 우선은 공간을 구성하는 모든 기저 벡터의 크기가 1인 것을 볼 수가 있습니다 268 00:17:18.182 --> 00:17:22.002 자,기저 벡터 코사인 세타와 사인 세타를 우리가 봤을 때 269 00:17:22.382 --> 00:17:26.082 얘의 노름은 코사인 제곱 세타 더하기 사인 제곱 세타인데 270 00:17:26.082 --> 00:17:29.562 이것은 지난번에 피타고라스의 정리에 의해서 271 00:17:29.562 --> 00:17:31.166 1이라는 것을 알 수가 있었죠 272 00:17:31.560 --> 00:17:36.521 얘도 마찬가지로 제곱하면 음의 부호가 날아가게 되니까 273 00:17:36.522 --> 00:17:38.798 코사인 제곱 세타 사인 제곱 세타가 되면서 274 00:17:39.087 --> 00:17:42.467 두 번째 기저 벡터도 1인 것을 알 수가 있습니다 275 00:17:42.680 --> 00:17:45.880 이것은 가로로 봐도 마찬가지고 세로로 봐도 마찬가지입니다 276 00:17:46.654 --> 00:17:48.854 그 다음에 서로 직교하고 있다는 것은 277 00:17:48.855 --> 00:17:51.255 우리가 방금 전에 확인했었죠 278 00:17:51.719 --> 00:17:54.040 그 다음에 행렬식의 값을 살펴보겠습니다 279 00:17:54.041 --> 00:17:55.693 ad-bc 280 00:17:55.693 --> 00:18:00.387 즉,코사인 제곱 세타 더하기 사인 제곱 세타가 되면서 281 00:18:00.388 --> 00:18:02.204 ad-bc 값 282 00:18:02.205 --> 00:18:04.641 행렬식의 값도 1인 것을 확인할 수가 있습니다 283 00:18:05.119 --> 00:18:07.220 자 그래서 이러한 회전 변환은 284 00:18:07.221 --> 00:18:14.600 변화한 후에 어떤 물체의 모양이 형태가 변하지 않는다는 것을 보장해 주는 285 00:18:14.600 --> 00:18:16.764 특별한 변환이라고 할 수가 있고 286 00:18:16.959 --> 00:18:20.000 이것을 리지드 트랜스폼이라고도 이야기합니다 287 00:18:20.502 --> 00:18:24.642 벡터 내적의 활용 288 00:18:25.040 --> 00:18:29.859 자 이러한 벡터 내적을 실제적으로 어떻게 활용하는지 한번 살펴보겠습니다 289 00:18:30.199 --> 00:18:33.072 대표적으로 앞뒤 판별을 많이 사용하는데요 290 00:18:33.480 --> 00:18:36.919 벡터 내적이 가지고 있는 코사인 공식을 사용해서 291 00:18:36.920 --> 00:18:41.266 목표물이 앞쪽에 있는지 뒤쪽에 있는지를 파악할 수가 있습니다 292 00:18:42.165 --> 00:18:45.760 만약에 여기 그림에서 제가 어떤 사람이 있고 293 00:18:45.761 --> 00:18:49.277 앞을 바라보는 시선 벡터가 있다고 생각해 봅시다 294 00:18:49.277 --> 00:18:51.372 그러면 어떤 물체가 있을때 295 00:18:51.372 --> 00:18:53.260 물체로 향하는 벡터 296 00:18:54.020 --> 00:18:56.980 나한테서 물체로 향하는 벡터를 만들 수가 있겠죠 297 00:18:57.479 --> 00:19:00.520 이것의 값이 298 00:19:00.736 --> 00:19:02.396 사잇각을 세타라고 했을 때 299 00:19:02.982 --> 00:19:07.201 내적을 우리가 진행하면 그것이 코사인 세타에 비례하게 되는데 300 00:19:07.479 --> 00:19:09.120 코사인 세타의 경우에는 301 00:19:09.121 --> 00:19:11.943 코사인의 그래프는 0을 기준으로 302 00:19:11.944 --> 00:19:16.521 y는 x는 0일 때 1에서부터 이렇게 쭉 내려오는 형태가 되죠 303 00:19:16.521 --> 00:19:18.278 어디까지 내려오냐면 304 00:19:18.279 --> 00:19:22.532 플러스 90도 마이너스 90도까지 서서히 내려와 가지고 305 00:19:22.532 --> 00:19:23.839 0에 도달하고 306 00:19:23.840 --> 00:19:26.480 그 이후부터는 마이너스로 내려가게 됩니다 307 00:19:26.834 --> 00:19:32.761 즉 마이너스 90도 부터 90도 까지는 양수를 가진다는 얘기고요 308 00:19:32.762 --> 00:19:35.984 이것은 지금 이 사잇각을 우리가 봤을 때 309 00:19:35.984 --> 00:19:41.259 플러스 90도 마이너스 90도가 되기 전까지 양의 값을 가진다는 겁니다 310 00:19:41.479 --> 00:19:43.940 그 이후에는 음의 값을 가지게 되는 거죠 311 00:19:44.485 --> 00:19:48.286 그렇다면 벡터의 크기라는 것은 절대로 음의 값이 나오지 않기 때문에 312 00:19:48.286 --> 00:19:52.105 우리가 내적을 사용해서 결과 값이 양수가 나왔다 313 00:19:52.319 --> 00:19:55.680 그러면 코사인 세타 값이 양수라는 얘기고요 314 00:19:55.924 --> 00:19:59.903 음수가 나왔다고 하면은 코사인 세타 값이 음수라는 것을 의미합니다 315 00:20:00.319 --> 00:20:03.964 따라서 두 벡터를 내적한 값이 양수라면 316 00:20:04.469 --> 00:20:08.109 물체는 내 시선 방향과 같은 사이드 317 00:20:08.109 --> 00:20:10.422 같은 방향에 있다는 것을 의미하고 318 00:20:10.422 --> 00:20:12.180 이것을 앞에 있다라고 표현하는 거죠 319 00:20:12.529 --> 00:20:16.540 그 다음에 내적의 값이 음수가 나왔다면 뒤에 있다라고 320 00:20:16.540 --> 00:20:18.829 우리가 파악할 수가 있게 되는 겁니다 321 00:20:19.680 --> 00:20:22.739 이것을 조금 더 응용하게 되면 322 00:20:22.740 --> 00:20:25.980 어떤 시야를 판별하는 데도 유용하게 사용할 수가 있는데요 323 00:20:26.439 --> 00:20:29.440 다음과 같은 상황에 똑같이 가정해 보겠습니다 324 00:20:29.951 --> 00:20:33.510 내가 바라보는 방향을 기준으로 해서 325 00:20:33.511 --> 00:20:39.332 내가 측정하고자 하는 물체 목표물과의 사잇각을 알파라고 했을 때 326 00:20:39.673 --> 00:20:44.800 이 알파가 주인공의 설정된 시선각 327 00:20:45.301 --> 00:20:49.400 베타 안에 들어와 있는지 바깥에 있는지 328 00:20:49.400 --> 00:20:51.987 판별하는데 사용할 수도 있습니다 329 00:20:52.119 --> 00:20:57.023 시야각이라고 하는 것은 시선벡터를 기준으로 해서 330 00:20:57.024 --> 00:20:59.193 양쪽으로 균일하게 나눈 것이기 때문에 331 00:20:59.393 --> 00:21:03.886 우리가 한쪽만 바라보면 시야각을 절반 나눈 2분의 베타 값이 되겠죠 332 00:21:05.368 --> 00:21:09.637 이 안에 결국에는 목표물이 들어가 있는지 333 00:21:09.638 --> 00:21:14.172 즉,알파가 2분의 베타보다 적은지를 우리가 파악하는 334 00:21:14.172 --> 00:21:15.929 그런 과제가 있는 겁니다 335 00:21:16.213 --> 00:21:21.121 시야에 탐지 된다고 하면 알파가 2분의 베타보다 작은 상황이 되겠죠 336 00:21:21.598 --> 00:21:25.298 그런데 우리는 이 시야각은 알고 있지만 337 00:21:25.299 --> 00:21:27.894 알파에 대한 각을 알고 있지는 않습니다 338 00:21:27.894 --> 00:21:28.760 재야 되죠 339 00:21:29.134 --> 00:21:32.074 각을 재려면 지난번에 언급한 340 00:21:32.074 --> 00:21:37.919 아크 탄젠트 같은 역함수를 사용해서 구할 수도 있지만 341 00:21:38.259 --> 00:21:40.322 내적을 사용하면 보다 효율적으로 342 00:21:40.322 --> 00:21:43.956 이 코사인의 알파 값은 몰라도 343 00:21:43.957 --> 00:21:46.444 코사인 값이 가지고 있는 성질을 사용해서 344 00:21:46.757 --> 00:21:48.817 우리가 바로 구할 수가 있게 됩니다 345 00:21:50.520 --> 00:21:52.110 자 이걸 어떻게 파악하냐면요 346 00:21:52.111 --> 00:21:55.841 우선은 코사인 2분의 베타 값을 미리 저장해둡니다 347 00:21:55.841 --> 00:21:57.439 시야각 같은 경우에는 348 00:21:58.822 --> 00:22:02.782 캐릭터에 설정된 시야 범위 같은 경우에는 바뀔 일이 많이 없기 때문에 349 00:22:03.040 --> 00:22:07.834 사실상 미리 구해놓고 저장해 두는 것이 유리하다고 할 수가 있고요 350 00:22:08.312 --> 00:22:11.352 그 다음에 시선 벡터와 목표물로 향하는 351 00:22:11.353 --> 00:22:13.658 이 벡터를 노멀라이즈 352 00:22:13.658 --> 00:22:16.873 정교화 시켜 가지고 크기를 1로 만들어줍니다 353 00:22:17.488 --> 00:22:22.381 그렇다면 두 벡터가 가지고 있는 내적 값의 결과는 354 00:22:22.382 --> 00:22:24.362 코사인 알파 값이 되겠죠 355 00:22:25.112 --> 00:22:28.111 그런데 코사인 함수의 성질을 보면 356 00:22:28.872 --> 00:22:31.672 0도에서부터 이렇게 쭉 내려가지 않습니까 357 00:22:31.672 --> 00:22:34.640 언제까지 내려가냐면 180도까지 내려갑니다 358 00:22:34.900 --> 00:22:35.620 쭉 내려갑니다 359 00:22:35.621 --> 00:22:41.832 그렇기 때문에 코사인 함수는 각이 증가할수록 값이 감소하기 때문에 360 00:22:42.199 --> 00:22:46.190 우리가 이 알파 값이 2분의 베타 361 00:22:47.593 --> 00:22:52.372 코사인 알파 값이 코사인 2분의 베타보다 크다면 362 00:22:52.373 --> 00:22:54.933 그 각은 더 작다는 것을 의미합니다 363 00:22:55.191 --> 00:22:57.644 그래서 두 코사인 값을 비교해서 364 00:22:57.645 --> 00:23:01.651 코사인 알파 값이 코사인 2분의 베타 값보다 더 크면 365 00:23:02.322 --> 00:23:05.942 이 목표물은 시야 범위 내에 있다라고 366 00:23:06.336 --> 00:23:09.356 각을 몰라도 이것을 파악할 수가 있게 됩니다 367 00:23:09.800 --> 00:23:15.443 종종 역함수를 사용하는 그런 경우들도 사용은 하지만 368 00:23:15.443 --> 00:23:19.352 이것보다는 내적이 가지고 있는 성질을 사용해서 구하면 369 00:23:19.353 --> 00:23:23.492 보다 효율적으로 구할 수가 있다는 것을 알아두시면 좋겠습니다 370 00:23:24.492 --> 00:23:27.664 그 다음에는 음영 계산 371 00:23:27.934 --> 00:23:30.453 컴퓨터 그래픽 3차원을 다룰 때 372 00:23:30.913 --> 00:23:35.493 빛이 가지고 있는 방향에 따라서 명암 373 00:23:35.767 --> 00:23:36.900 쉐이딩이라고 하죠 374 00:23:36.900 --> 00:23:42.681 명암을 지정을 할 때 내적이 굉장히 유용하게 사용이 되는데요 375 00:23:43.241 --> 00:23:46.054 우리가 어떤 광원이 있을때 376 00:23:48.120 --> 00:23:52.581 빛이 이렇게 딱 들어와서 표면에 거친 다음에 377 00:23:53.743 --> 00:23:56.523 그 다음에 우리 눈으로 들어오는 과정을 거치게 되는데 378 00:23:56.900 --> 00:24:01.460 우리가 이 빛이 비치는 그 양이 379 00:24:01.923 --> 00:24:07.823 표면이 향하는 방향에 직각일수록 그 양이 가장 많아집니다 380 00:24:08.479 --> 00:24:10.302 들어오는 빛이 많아진다는 거죠 381 00:24:10.895 --> 00:24:15.834 그리고 이게 점점 빛과 표면방향이 382 00:24:17.459 --> 00:24:19.719 사잇각이 크면 커질수록 383 00:24:19.720 --> 00:24:23.595 점점 들어오는 빛의 양이 이제 줄어드는 형태를 가지는데 384 00:24:23.595 --> 00:24:25.559 그 줄어드는 형태가 바로 385 00:24:25.559 --> 00:24:32.458 코사인 세타와 비례해서 줄어든다는 것이 렘버트 코사인 법칙 이라는 386 00:24:32.458 --> 00:24:37.998 표면 방향과 광원의 사잇값에 따라서 음영이 결정되는 387 00:24:37.998 --> 00:24:39.315 아주 단순한 공식이기 때문에 388 00:24:39.315 --> 00:24:42.541 이것은 내적을 사용해서 쉽게 구할 수가 있습니다 389 00:24:42.542 --> 00:24:44.541 그래서 표면의 방향 벡터와 390 00:24:44.541 --> 00:24:47.591 표면에서 광원으로 향하는 벡터를 구하고 391 00:24:47.940 --> 00:24:53.461 그 다음에 이 광원의 크기를 1로 정교화 시켜준 다음 내적을 시켜주면 392 00:24:53.461 --> 00:24:57.689 이것은 해당 광원이 얼만큼 들어왔는지 393 00:24:57.829 --> 00:25:01.469 명암을 결정해주는 중요한 요소로 작용하게 됩니다 394 00:25:02.349 --> 00:25:05.701 그래서 표면의 방향 벡터를 N 395 00:25:05.701 --> 00:25:10.328 그 다음에 표면에서 광원으로 향하는 벡터를 L 이라고 보통 표현해가지고 396 00:25:10.328 --> 00:25:12.581 N.L이라고 많이 불리는데요 397 00:25:12.870 --> 00:25:17.020 이 N.L로 명암을 만드는 아주 기본적인 공식이 398 00:25:17.021 --> 00:25:20.996 렘버트 코사인 법칙을 사용해서 만드는 것을 399 00:25:20.997 --> 00:25:23.077 디퓨저 쉐이더라고 보통 이야기합니다 400 00:25:23.077 --> 00:25:27.621 그래서 이건 유니티 엔진에서 사용하는 예제에서 가져왔는데요 401 00:25:27.622 --> 00:25:30.728 디퓨저 쉐이더라는 것이 지금 제가 설명드린 402 00:25:30.728 --> 00:25:33.394 내적만을 사용해서 명암을 표현할 때 403 00:25:33.734 --> 00:25:39.516 이러한 음영을 우리가 지정해 가지고 그릴 수 있다라는 것을 404 00:25:39.516 --> 00:25:40.821 이해하시면 되겠습니다 405 00:25:40.821 --> 00:25:45.993 그래서 이러한 렘버트 코사인 법칙의 N.L은 406 00:25:46.353 --> 00:25:48.463 조명은 아주 기본적인 조명이고 407 00:25:48.463 --> 00:25:51.100 여기서 이것을 기반으로 해가지고 408 00:25:51.101 --> 00:25:56.518 복잡한 형태의 조명식으로 발전을 하게 되는데요 409 00:25:57.359 --> 00:26:01.920 어쨌든 가장 밑바닥에서는 이 N.L이 자리 잡고 있다 정도만 410 00:26:01.920 --> 00:26:04.182 여러분들이 이해해 주시면 될 것 같습니다 411 00:26:04.920 --> 00:26:08.301 마지막으로는 투영 벡터 공식에 대해서 설명 드릴 텐데요 412 00:26:08.501 --> 00:26:11.181 이것은 어떤 벡터에다가 413 00:26:11.182 --> 00:26:12.562 두 개의 벡터가 있을 때 414 00:26:12.562 --> 00:26:14.679 하나의 벡터에 내가 투영을 했을 때 415 00:26:14.679 --> 00:26:17.424 파악하는 공식이라고 할 수가 있습니다 416 00:26:17.844 --> 00:26:20.285 여기 벡터 u와 v 가 있을때 417 00:26:20.960 --> 00:26:24.279 여기서 투영한 벡터 u 를 v 에다가 투영하게 되면 418 00:26:24.496 --> 00:26:26.875 v 프라임이라고 제가 이야기하겠습니다 419 00:26:26.875 --> 00:26:32.064 이 v 프라임이라고 하는 것은 결국에는 v에 투영했기 때문에 420 00:26:32.384 --> 00:26:34.486 v와 방향이 동일합니다 421 00:26:34.486 --> 00:26:35.663 크기만 다르겠죠 422 00:26:36.175 --> 00:26:38.355 크기만 다르고 방향만 갖게 되겠죠 423 00:26:38.923 --> 00:26:42.933 그렇다면은 이 벡터 v 프라임을 어떻게 구하냐면 424 00:26:42.934 --> 00:26:45.325 방향이 같고 크기만 다르기 때문에 425 00:26:45.325 --> 00:26:49.155 일단은 v 를 정교화 시켜줍니다 426 00:26:49.155 --> 00:26:52.315 정교화 시켜줘가지고 이렇게 v hat을 만들어줍니다 427 00:26:52.315 --> 00:26:55.291 크기가 1인 단위 벡터 v hat을 만들어주고 428 00:26:55.303 --> 00:27:01.105 그 다음에 v 프라임이 가지고 있는 벡터의 크기만큼 여기다 곱해 주면 429 00:27:01.105 --> 00:27:03.971 v 프라임을 우리가 구할 수가 있겠죠 430 00:27:04.904 --> 00:27:09.225 그런데 이 v 프라임의 크기를 어떻게 구하냐 431 00:27:09.485 --> 00:27:12.316 얘가 가지고 있는 노름을 어떻게 구하냐라고 432 00:27:12.864 --> 00:27:14.205 이제 그게 관건인데 433 00:27:14.205 --> 00:27:17.185 그것은 우리가 벡터 u 를 알고 있기 때문에 434 00:27:17.730 --> 00:27:26.089 벡터 u 가 가지고 있는 크기에다가 코사인 세타를 곱해 주면 435 00:27:26.089 --> 00:27:28.703 바로 v 프라임의 크기를 구할 수가 있습니다 436 00:27:29.123 --> 00:27:35.963 자 그렇다면 그 값의 코사인 세타를 어떻게 구할 수 있냐로 귀결할 수가 있는데 437 00:27:36.163 --> 00:27:41.463 앞서서도 코사인 세타의 값을 우리가 내적으로 구할 수가 있다고 했죠 438 00:27:41.823 --> 00:27:45.025 그렇기 때문에 내적의 식을 다시 봤을 때 439 00:27:45.026 --> 00:27:50.128 u와 v 를 내적한 것은 u의 크기와 v의 크기를 곱하고 440 00:27:50.129 --> 00:27:51.642 코사인 세타를 곱한 것이 되고 441 00:27:51.998 --> 00:27:54.066 결국에 그 사잇각 코사인 세타는 442 00:27:54.066 --> 00:27:57.465 이런 식으로 우리가 바꿔서 계산할 수가 있다는 443 00:27:57.466 --> 00:27:58.714 결론이 나오게 됩니다 444 00:27:59.264 --> 00:28:03.405 자 그러면 이 값을 우리가 다시 여기에 대입해서 445 00:28:05.721 --> 00:28:06.721 서로 곱해 주면 446 00:28:07.684 --> 00:28:10.465 투영 벡터의 최종식을 구할 수가 있는데요 447 00:28:10.465 --> 00:28:11.415 v 프라임 448 00:28:11.706 --> 00:28:13.826 최종 투영 벡터를 구할 수가 있는데요 449 00:28:14.364 --> 00:28:19.025 여기서 u.v 에다가 450 00:28:19.495 --> 00:28:23.194 분모는 u의 크기와 v의 크기가 되는데 451 00:28:24.444 --> 00:28:28.125 여기서 v hat은 분모가 v고 452 00:28:28.125 --> 00:28:29.537 그 다음에 위에가 v 였죠 453 00:28:29.751 --> 00:28:34.290 그렇기 때문에 v의 크기를 두 번 사용했기 때문에 454 00:28:34.291 --> 00:28:36.503 v의 노름의 제곱이 되는 것이구요 455 00:28:36.503 --> 00:28:39.224 u.v.v가 된다고 볼 수가 있고 456 00:28:39.651 --> 00:28:42.290 그 다음에 앞서서 u를 우리가 곱하기 때문에 457 00:28:42.870 --> 00:28:44.910 분모에 있는 u가 서로 상쇄가 되겠죠 458 00:28:44.910 --> 00:28:46.644 그래서 최종 공식이 이렇게 나오고 459 00:28:46.975 --> 00:28:48.935 노름의 제곱이라는 것은 460 00:28:48.936 --> 00:28:51.893 같은 벡터를 두 번 곱한 결과와 동일하다고 할 수 있으니까 461 00:28:51.893 --> 00:28:53.864 이렇게도 표시할 수가 있습니다 462 00:28:53.864 --> 00:28:56.069 둘은 이제 같은 식이라고 보시면 되고요 463 00:28:56.604 --> 00:29:00.961 여기에서 만약에 내가 투영하려는 벡터 v의 크기가 1이라면 464 00:29:00.962 --> 00:29:03.122 굳이 크기를 구할 필요가 없기 때문에 465 00:29:03.397 --> 00:29:06.677 위 식은 조금 더 단순하게 구할 수가 있습니다 466 00:29:07.203 --> 00:29:11.505 자 그럼 이런 투영 벡터의 공식은 467 00:29:11.835 --> 00:29:16.515 우리가 앞으로 진행할 다양한 벡터의 응용 과정이나 468 00:29:16.515 --> 00:29:20.903 아니면 여러가지 평면의 방정식 이라든지 469 00:29:20.903 --> 00:29:22.903 이론에서 중요하게 사용이 되는데요 470 00:29:23.503 --> 00:29:29.225 우선은 이렇게 기본적인 공식이 있다 정도만 설명을 드리고 471 00:29:29.226 --> 00:29:33.486 응용 방법에 대해선 나중에 평면의 방정식을 다룰 때 472 00:29:33.486 --> 00:29:35.856 보다 자세하게 설명드리도록 하겠습니다 473 00:29:36.518 --> 00:29:39.125 자 지금까지 벡터 내적에 대해서 알아봤습니다 474 00:29:39.225 --> 00:29:41.305 이번 강의는 여기까지 입니다 475 00:29:41.305 --> 00:29:43.152 수업 듣느라 고생하셨습니다 476 00:29:43.153 --> 00:29:44.113 감사합니다 477 00:29:44.532 --> 00:29:45.832 벡터 내적의 개념 벡터의 내적 벡터의 각 요소끼리 곱한 후 더하는 형태의 연산 478 00:29:45.833 --> 00:29:46.833 벡터 내적의 성질 교환 법칙을 만족함 결합 법칙을 만족하지 않음 분배 법칙을 만족함 a,b곱하기c,d는 ac더하기bd 479 00:29:46.834 --> 00:29:47.834 n차원의 같은 벡터를 내적 하면 노름의 제곱이 됨 480 00:29:47.835 --> 00:29:49.503 벡터 내적의 코사인 공식 a 곱하기 b는 벡터 a 벡터 b 코사인세타 두 벡터의 크기가 1일때 스칼라 a곱하기 스칼라 b는 코사인 세타 481 00:29:49.503 --> 00:29:50.983 벡터 내적의 개념 벡터 내적의 직교성 판별 두 벡터가 직교한다는 것을 내적으로 증명할 수 있음 482 00:29:50.983 --> 00:29:51.845 코사인 세타,사인 세타 곱하기 마이너스 사인 세타,코사인 세타는 0 483 00:29:51.845 --> 00:29:52.985 리지드 트랜스포메이션 물체의 형태를 그대로 유지하는 변환 회전 변환은 물체의 형태를 변형시키지 않음 484 00:29:52.985 --> 00:29:54.485 조건 공간을 구성하는 모든 기저 벡터의 크기가 1 모든 기저 벡터가 서로 직교하고 있어야 함 선형 변환의 행렬식 값이 1 485 00:29:54.485 --> 00:29:55.426 백터 내적의 활용 앞뒤 판별 두 벡터를 내적 한 결괏값이 양수일 때 물체는 시선 앞에 위치함 486 00:29:55.427 --> 00:29:56.647 두 벡터를 내적 한 결괏값이 음수일 때 물체는 시선 뒤에 위치함 487 00:29:56.647 --> 00:29:57.668 시야 판별 시선 벡터와 목표물로 향하는 벡터의 내적은 코사인 알파 코사인 알파의 값이 코사인 2분의 베타보다 큰 값이라면 목표물은 시야 내에 있음 488 00:29:57.668 --> 00:29:58.589 음영 계산 램버트 코사인 법칙 물체 표면이 반사하는 빛의 휘도는 표면 방향과 광원 방향의 사잇각의 코사인 값에 비례함 489 00:29:58.589 --> 00:29:59.451 셰이더 조명 공식 N.L 공간 표면의 방향 벡터 N 표면에서 광원으로 향하는 벡터 L 490 00:29:59.451 --> 00:30:02.522 투영 벡터 공식 하나의 벡터를 다른 벡터에 투영시킨 벡터를 구하는 식 v`는 벡터 v제곱분의 u곱하기 v곱하기 v는 v곱하기 v분의 u곱하기 v곱하기v 491 00:30:02.522 --> 00:30:04.263 투영하려는 벡터의 크기가 1일때 v`는 u곱하기 v곱하기 v