내적은 프로그래밍 등 실제 연산 할 때 필수로 쓰이고 엄청 많이 쓰이는 연산이다.
단어 내적의 "적" 은 쌓다, 저축 이런 뜻인데 두 벡터의 원소들을 각각 곱하고 차곡차곡 더한것이라는 뜻이다.
아래는 두 벡터의 a, b이다.
a의 성분을 (x1, y1, z1)라 하고
b의 성분을 (x2, y2, z1)라 하면
내적은 a·b = x1*x2 + y1*y2 + z1*z2이다.

보통 내적을 구할 때 공식은 a · b = |a| |b| cosθ라고 배우는데 이것이 왜 a·b = x1*x2 + y1*y2 + z1*z2과 같은지
증명 해보겠다.
먼저 내적을 증명하기전에 코사인 제2법칙을 알아야한다.
제1코사인 법칙을 먼저 알면 제2코사인 법칙도 쉽게 알 수 있다.
1. 제1코사인 법칙

위와 같은 삼각형이 있을 때 꼭지점(각도)는 대문자 A,B,C 꼭지점에서 마주보는 선분은 소문자 a,b,c로 나타내 준다.
이 때

를 제 1코사인 법칙이라고 한다.
2. 제2코사인 법칙

제1코사인 법칙에서 a = bcosC + ccosB에 a를 곱해주고 두번 째 공식에는 b를 세번째 공식에는 c를 곱해준다.

변형된 식을 다음과 같이 만들어 빼준다.
a^2 - b^2 - c^2 의 식에서 a^2 - b^2 먼저 풀어준다.

나온 값에 c제곱을 빼주게 되면 -2bccosA가 나온다.
a2를 기준으로 이향해줍니다.

3. 내적 증명
이제 제1, 2코사인 법칙에 대한 설명이 끝났으니 이어서 내적 증명을 해보겠다.

먼저 위와 같은 삼각형에서 제2코사인법칙에 의해

로 나타낼 수 있다.

제2코사인법칙을 이용해서 나타내주면 다음과 같다.

결과는 아래의 결과와 같다.

그리고 각각 선분의 크기를 구해주면 아래와 같다.



첫번 째 결과

에서

를 없애기 위해 아래와 같이 해준다.

계산한 결과 (1)의 결과를 얻을 수 있다.

두번 째 결과
각 벡터의 내적을 계산해보겠다. 위에서 구한 각 선분들 크기를 대입해주고 풀어주면 아래와 같이 나온다.


아까 (1)식과 (2)식을 비교해보면



2를 양변에 나눠주면 각 원소의 곱들의 합이 내적공식이 된다.
'Programming > Soft Renderer_2019' 카테고리의 다른 글
#6 평면의 방정식과 D의 의미 알아보기 (0) | 2019.12.16 |
---|---|
#5 투영 벡터 공식 유도 (0) | 2019.12.16 |
#3 카메라의 뷰 좌표계의 LookAt 행렬 유도하기 (0) | 2019.12.16 |
#2 오일러각 입력에 따라 Forward, Up, Right 벡터를 구하고 이를 토대로 3차원 회전 행렬 구하기 (0) | 2019.12.16 |
#1 선형 변환과 행렬의 관계 (0) | 2019.12.16 |