개요

Screen Shot 2022-02-14 at 3.19.35 PM.png

백터의 내적을 구하는 공식은 다음과 같다.

$$ \vec A \cdot \vec B = |\vec A||\vec B|cosθ = x|\vec B| \frac{y}{x} = y|\vec B| $$

그러나 MiniRT 관련 레퍼런스에서 벡터의 내적을 구하는 함수에서는 수식이 다르게 정의되어 있다.

double      vdot(t_vec3 vec, t_vec3 vec2)
{
    return (vec.x * vec2.x + vec.y * vec2.y + vec.z * vec2.z);
}

$$ A \cdot B = A.x \times B.x + A.y \times B.y $$

이는 벡터를 구하는 공식이 한 개가 아니기 때문이다.

벡터의 성분만 알고 각은 모를 때

$$ A \cdot B = A.x \times B.x + A.y \times B.y $$

기하학적인 의미를 보여주지는 않지만, 두 벡터 간의 내적이 벡터 크기 배율을 가진 벡터 간 각도의 코사인 임을 알 수 있다.

https://t1.daumcdn.net/cfile/tistory/99A8053D5C4183BC3A

벡터의 성분과 각을 전부 알 때

$$ \vec A \cdot \vec B = |\vec A||\vec B|cosθ = x|\vec B| \frac{y}{x} = y|\vec B| $$

https://t1.daumcdn.net/cfile/tistory/99ECB2355C41843741

$$ |D|=|A| \times cosθ $$

여기서 A의 크기가 아닌, A를 분해한 벡터 D의 크기를 곱해주는 이유는

B 벡터에 실제로 영향을 주는 벡터가 D이기 때문이다.

벡터 C는 벡터 B의 방향으로 어떤 영향도 주지 못하기 때문에, 내적 계산에서 무시한다.