점 변환과 벡터 변환의 차이점은 무엇입니까?


11

이것이 강사가 강의 과정에서 나에게 한 말입니다.

4 * 4 행렬 만 고려합니다. 객체를 회전, 크기 조정 또는 변환하는 데 사용됩니다 (또는 이러한 작업의 조합). 매트릭스는 나중에 가상 카메라 모델 구현에서 사용됩니다. 벡터 변환과 점 변환의 차이점을 모르면 찾아보십시오.

답변을 찾지 못해이 질문에 대해서만이 웹 사이트에 대한 계정을 만들었습니다.


1
다른 모든 답변을 보완하고 다른 사람들이 이미 다른 곳 에서이 질문에 대답했기 때문에 확인할 수 있습니다. scratchapixel.com/lessons/…
user18490

답변:


9

간단한 대답은 다음과 같습니다.

4D에서 4x4 행렬로 곱할 수 있도록 벡터는 (x, y, z, 0)으로 표시되고 점은 (x, y, z, 1)로 표시됩니다.

4x4 행렬의 4 번째 행은 행렬의 변환을 나타내므로 위의 표현에서는 점이 변환의 영향을 받지만 벡터는 영향을받지 않습니다.

벡터와 포인트는 모두 회전, 스케일링 등에 영향을받습니다.

경고:

벡터에 특정 속성이있을 것으로 예상되면 더 깊이 논의해야합니다. 예를 들어, 동일한 행렬로 삼각형의 법선을 변환하면 삼각형의 꼭짓점을 변환 할 수 있으며, 실제로는 더 이상 삼각형의 법선 벡터가 아닐 수도 있습니다. 법선 벡터는 계산 된 정점에 대해 일종의 역 관계를 갖기 때문입니다.


법선은 벡터가 아니기 때문에 작동하지 않습니다. 그래도 개념에 대한 좋은 소개를 모릅니다.
MB 레이놀즈

@MBReynolds 수학적 의미에서 법선은 점 또는 방향 과 같은 벡터 입니다. 여기서 문제는 표면을 변환하기 위해 표면의 점에 적용하는 변환이 법선에 적용되지 않는다는 것입니다.
nbro

2
표면 법선은 벡터가 아닌 바이 벡터입니다. 두 벡터의 교차 곱으로 법선을 찾을 수 있으며 결과는 바이 벡터입니다. SEE 당 Vogensen의 : gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB 레이놀즈

4

내가 배운 것은 학생이기도 하기 때문에 회전, 스케일링 및 변환을 같은 방식으로 처리하기 위해 xtimes 행렬 로 작업하고 싶습니다. 즉 , 행렬을 곱하는 것입니다. , 행렬).4×44×4

이 행렬 이 없으면 변환은 벡터와 합산으로 표현되는 반면 회전과 스케일링은 각각 벡터와 스칼라 인자로 곱셈을 사용하여 표현됩니다.4×4

이제 문제는 3D 좌표계에서 4D 좌표계로 어떻게 전달할 것인가입니다. 답은 " 균일 좌표 "입니다.

그래서, 무슨 뜻입니까? 우리 는 회전, 스케일링 및 변환을 나타 내기 위해 매트릭스를 구성 하므로, 변환 (예 : 회전, 스케일링 등)을 나타 내기 위해 행렬 곱셈 만 사용합니다. 우리가 개별적으로 구성하는 방법은 더 구체적이지만 웹에서 볼 수 있습니다.4×4

이 시점에서는 크기가 일치하지 않기 때문에 행렬과 벡터를 곱할 수 없기 때문에 행렬과 3D 벡터가 아직 유용 하지 않습니다. 그래서 우리가 홈 좌표로 작업 할 때 주어진 3D 포인트를 해당 4D 포인트로 변환해야합니다.4×44×43D

우리는 어떻게합니까?

방향 벡터 와 위치 벡터를 구분 합니다. 이름에서 알 수 있듯이 방향 벡터는 방향이 향하고 있습니다. 우리는 또한 그들의 길이에 관심이 있지만 번역에 영향을받지 않습니다. 왜냐하면 그들의 위치에 관심이 없기 때문입니다. 위치 벡터 (또는 간단히 "포인트")는 번역되거나 이동할 수 있습니다. 그것들은 일반적으로 원점과 관련하여, 즉 원점에서 점 자체까지의 벡터로 표현됩니다.

해당 동종 벡터 의 번째 좌표 로 을 추가하여 3D 방향 벡터 를 변환합니다. 기본적으로 변환 효과가 제거되므로 0을 추가합니다. 우리는 위치 벡터와 비슷한 일을하지만, 대신에 1 대신 을 추가합니다 .0401

예를 들어 방향 벡터 가있는 경우 . 마찬가지로, 점 벡터 가 있으면3Dv=(v1v2v3)v=(v1v2v30)u=(u1u2u3)u=(u1u2u31)

참고 : 균일 좌표 변환에 대응에 백업에 사람을, 당신은 간단하게 제거 할 수 없습니다 이 아니라면, 좌표 여전히 동일 (또는 각각).3D4th10


이 정답은 대한 실제 동종 좌표 에서 도 점 의 유효한 표현이라는 점 을 언급하면 ​​더욱 완벽합니다 . 일반 3D 좌표에서 4D 투영 좌표로 변환 할 때 을 선택하는 것이 편리 하지만 역변환에서 다른 값을 허용 하면 4D 행렬 곱셈을 사용하여 원근 변환 을 나타낼 수 있습니다. (wx,wy,wz,w)w0(x,y,z)w=1w
Ilmari Karonen

2

벡터와 점의 정의를 찾으려면 벡터는 다음과 같습니다.

크기와 방향으로 완전히 지정된 속도와 같은 수량. http://www.thefreedictionary.com/vector

그리고 요점은 다음과 같습니다.

위치를 제외한 속성이없는 치수가없는 형상 객체입니다. http://www.thefreedictionary.com/point

따라서 벡터는 스케일이있는 방향이고 점은 위치입니다.

따라서 벡터를 변형하면 회전하고 크기를 조정할 수 있습니다. 점을 사용하면 점을 변환 할 수도 있습니다 (점의 회전 및 크기 조정은 점 자체가 회전 할 수없는 위치이므로 원점을 중심으로 함).

대부분의 경우 벡터와 점은 4 개의 구성 요소가있는 벡터 인 동일한 컨테이너에 배치됩니다. 유일한 차이점은 w 구성 요소입니다. w 성분이 0이면 방향입니다. 1이면 벡터는 점입니다.

그 이유는 행렬 자체에서 찾을 수 있습니다. 4x4 행렬이있는 4 개의 구성 요소가있는 벡터를 곱하는 방식을 사용합니다. 어떻게 작동하는지 모르는 경우 빠른 Google을 제안합니다.

대부분의 경우 4x4 매트릭스를 사용합니다. 정상적인 변환 행렬은 다음과 같을 수있다 : (회전 스케일은 당신이 말할 수있는 3x3 영역에 배치되므로 회전과 스케일을 위해 3x3 매트릭스도 사용할 수 있지만 변환이 시작되면 4 번째 열이 필요합니다.)

[rot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslation0001]

보시다시피, 마지막 구성 요소가 0이면 0을 곱한 결과가 0이므로 변환이 없습니다.

따라서 다각형 개체가있는 컴퓨터 그래픽에서 쉽게 사용할 수 있습니다. 위치와 법선을 변환하는 동일한 변환 행렬이 있습니다. 법선의 w 구성 요소가 0으로 설정되고 위치의 w 구성 요소가 1이기 때문에 법선은 방금 회전되고 (또한 크기가 조정되어 이상한 것들로 이어질 수 있으므로, 법선의 대부분은 정규화됩니다. ') t 이상한 점 때문에 위치와 회전에 동일한 행렬을 사용하는 것이 좋습니다! @JarkkoL의 의견을보십시오. 위치가 변환되고 원점을 중심으로 회전 및 축척됩니다.

내가 실수하지 않았기를 바랍니다 : P, 이것은 당신에게 도움이되었습니다!


2
법선은 위치와 동일한 변환 행렬로 변환되지 않습니다. 비 균일 스케일링 및 / 또는 왜곡이있는 변환의 법선을 올바르게 변환하려면 3x3 하위 행렬의 전치 역수를 계산해야합니다.
JarkkoL

@JarkkoL 네, 맞습니다. 맞습니다. 동일한 매트릭스를 사용하지 않는 것이 가장 좋지만 구현에 따라 수행됩니다. 대부분의 경우 사람들은 비 균일 스케일링이나 스케일링을 전혀 사용하지 않기 때문에 법선 왜곡에 대해 크게 신경 쓰지 않습니다. 위치와 법선 변환에 대한 부분은 하나의 컨테이너를 사용하는 것이 유용 할 수 있다는 것입니다.
bram0101
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.