Natan에 대한 적절한 의견에 대답하기 위해 Affine Space의 벡터를 사용하여 표준 유클리드 공간에서 3D 벡터를 나타낼 때 실제로 어떤 일이 발생하는지 이해하는 데 도움이되는 몇 가지 고려 사항이 있습니다.
먼저 좌표가있는 벡터를 벡터 라고 부를 것이므로 점과 벡터는 같은 개체입니다. 두 점의 차이로 벡터를 볼 수 있습니다. V = B - A ; A + V = A + B - A = B 이므로 V 는 A 에서 B 로 이동
합니다. 넣어 = 0 (원점) 및 당신은 얻을 것이다 V = B - 0 = B : 점 B 와 벡터 것을 이동 0에 B는 같은 일이다.
아핀 공간의 벡터가 w = 0 인 경우 대부분의 3D 라이브러리에서 사용되는 의미에서 "벡터" 를 호출 합니다.
이 행렬은 소형 / 우아한 / 효율적인 형태로 선형 함수를 나타낼 수 있기 때문에 사용되지만 선형 함수는 원점을 변환 할 수없는 주요 단점이 있습니다. F ( 선형)를 원할 경우 F ( 0 ) = 0 F (λ X ) = λF ( X ) 및 F ( A + B ) = F ( A ) + F ( B ) 와 같은 다른 것들
이것은 0 벡터를 절대로 이동시키지 않기 때문에 변환을 수행하는 행렬을 구성 할 수 없음을 의미합니다 . 여기 Affine Space가 있습니다. 아핀 공간은 유클리드 공간에 치수를 추가하여 스케일링과 회전으로 traslantion을 수행 할 수 있습니다.
Affine Space는 Affine과 Euclidean 벡터 간의 등가 관계를 구성하여 (포인 및 벡터와 마찬가지로) 혼동 할 수 있다는 점에서 투영 공간입니다. 동일한 방향으로 원점으로 투영되는 모든 아핀 벡터는 동일한 유클리드 벡터로 볼 수 있습니다.
이것은 좌표에서 비율이 같은 모든 벡터가 동등한 것으로 간주 될 수 있음을 의미합니다.
수학적으로 :
즉, 모든 아핀 벡터는 w = 1 인 캐논 버전으로 축소 될 수 있습니다 (모든 등가 벡터 중에서 가장 선호하는 것을 선택합니다).
시각적으로 (2D 유클리드-3D 아핀) :
그러므로 "투사" 공간 의 평균 ; 여기서 유클리드 공간은 2D (청록색 영역)입니다.
(하이퍼) 평면 w = 0에있는 정식 버전으로 쉽게 넣을 수없는 특정 아핀 벡터 집합이 있습니다.
시각적으로 보여줄 수 있습니다 :
당신이보아야 할 것은 w-> 0 인 동안 유클리드 공간으로 투영 된 벡터는 무한대로 가지만 특정 방향으로 무한대로 간다는 것 입니다.
이제 유클리드 공간에서 합 벡터를 투영 벡터로 간주 할 때 투영 공간에 두 개의 벡터를 더하면 문제가 발생할 수 있음을 알 수 있습니다. 이것은 아핀 공간에서 W 성분을 합한 다음에 투영하기 때문에 추가됩니다. 유클리드 (하이퍼) 비행기.
이것이 바로 "벡터"가 "포인트"의 w 좌표를 변경하지 않기 때문에 "포인트"만을 "벡터"로 합칠 수있는 이유입니다. 이는 w = 1 인 "포인트"에 대해서만 적용됩니다 .
초록색 점은 청록색 "점" 과 V "벡터" 를 나타내는 두 개의 아핀 벡터를 추가하여 얻은 점 이지만 , 캐논과 다른 형태의 모든 아핀 벡터에 V 를 적용 하면 잘못된 결과 (빨간색 ""포인트 "").
당신은 볼 아핀 공간을 투명하게 사용할 수 없습니다 유클리드 공간에서 작동하고 설명하는 용어 "벡터"의 오용을 계산 금액의 (엄격한) 제약에서 의미가 만 에 캐논 투영 벡터를 .
실제로 GPU가 Vector4 가 w = 0 또는 w = 1 이어야 한다고 가정하는 것은 합리적 입니다.