벡터에 대해 너무 다르거 나 복잡하거나 유용한 것은 무엇입니까?


21

이것이 실제 질문으로 간주되지 않는다면 용서하십시오. 그러나 그것은 정말로 혼란 스럽습니다.

다른 게임 개발자들이 벡터를 사용하는 것이 매우 유용한 방법에 대해 이야기하는 것을 들었습니다. 또한 모든 사람들이 벡터 수학에 겁을 먹고 벡터가 어려워 보일 수 있습니다. 나는 그들에 대해 배우지 않았습니다.

그래서 마침내 Wikipedia에서 Vector 를 보았고 놀랐습니다. 내가 잘못 생각하지 않는 한, 벡터 (단순함을 위해, 2D라고 말하면)는 단지 x와 y 좌표입니다. 내가 잘못 이해했다면 정정 해주세요.

그래서 여기 내 질문이 있습니다 : 그것은 2 (또는 3) 차원 좌표의 표현이 벡터라는 것을 의미하지 않습니까? 그렇다면 벡터와 좌표는 같습니다. 좌표 사용 하지 않고 게임을 만드는 것은 거의 불가능 하므로, 게임 프로그래밍을 많이 한 사람에게는 벡터가 어떻게 혼란 스럽거나 새롭습니까?

이것은 내가 약간의 설명을 사용할 수있는 것입니다. 도움을 주시면 감사하겠습니다.


5
벡터는 3D로 회전을 시작할 때까지 매우 간단합니다. 그러면 쿼터니언이 필요하고 마음이 아프게됩니다.
Alistair Buxton

벡터의 개념은 정말 혼란 스럽다. math, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 에서 요청 했지만 명확한 응답이 없었습니다. 순수한 좌절입니다. 당신이 그것에 추가 할 수 있습니다.
Val

1
이 답변의 모든 나쁜 비유로 사람들이 혼란스러워하는 것은 놀라운 일이 아닙니다.
Alistair Buxton

답변:


29

수학 전공이 벡터 포인트 또는 좌표를 호출한다고 들리지 않도록하십시오!

2D 벡터에는 좌표 가 아닌 x 및 y 성분이 있습니다. 벡터는 위치를 정의하지 않고 방향과 크기를 정의합니다.

사람들이 왜 그들에게 위협을 받는지 알 수 없습니다. 사람들이 일반적으로 수학에 의해 위협받는 것과 같은 이유 일 것입니다.

벡터와 좌표는 동일하지 않습니다. 그들은 비슷해 보이지만 사용 방식이 매우 다릅니다.

좌표는 세계에서 위치를 정의합니다. 벡터는 방향과 크기를 정의합니다. 둘은 종종 함께 사용됩니다. 예로서:

캐릭터는 위치와 속도를 가지고 있습니다. 위치는 좌표이고 속도는 벡터입니다. 위치에 속도를 추가하면 벡터의 크기로 정의 된 거리에서 문자를 벡터 방향으로 이동합니다 (벡터의 크기는 속도이므로 방향과 속도를 나타냅니다).

또는이 예에서 :

enter image description here

두 문자에는 위치가 있고 레이저 샷은 벡터입니다. 두 위치 사이의 벡터는 (3,1)입니다. 즉, X 축을 따라 +3, Y 축을 따라 +1을 이동합니다. 크기는 Sqrt ((X X) + (Y Y)) 로 찾을 수 있습니다 .

벡터 수학의 좋은 개요는 Wolfire 블로그 에서 찾을 수 있습니다


7
누군가가 Vector를 점 또는 좌표라고 할 때 화가 나는 것은 수학자 만이 아닙니다. 우리 물리학 자도 당신을 엉망으로 만들 것입니다.
TASagent

2
+1 그러나 내가 nit picking이라면, velocity 는 벡터이고 speed는 그 벡터의 크기입니다.
Ergwun

2
@ 발 : 나는 말도 안된다. 그것은 벡터가 단지 x와 y 좌표라는 질문의 오해를 해결합니다. '벡터 공간의 요소'를 언급하여 답변을보다 공식적이고 정확하게 만드는 것은 사람들이 왜 벡터 대수를 위협하는지 설명하는 데 도움이되는 것 외에는 아무런 도움이되지 않습니다.
Marcks Thomas

3
벡터는 (0,0)에 적용한 경우의 위치를 ​​알려주는 위치입니다. 벡터는 위치를 수정할 수 있지만 위치 정보는 포함하지 않습니다. 당신이 무슨 말을하는지 이해합니다. 우리가 이야기하는 차이점은이 질문에 중요하지 않다고 생각합니다. 이것이 게임 개발에 벡터가 사용되는 방식입니다. 입력 해 주셔서 감사합니다.
MichaelHouse

4
@Val : 좋은 선형 대수 강의는 Byte56에 동의합니다 : 벡터는 공간에서의 위치와 동일하지 않습니다 . “북쪽으로 3 마일 및 동쪽으로 1 마일”을“남쪽으로 1 마일”로 추가하는 것이 합리적입니다. 그러나“백악관의 위치”를“국방부의 위치”에 추가하는 것은 이치에 맞지 않습니다. 참조 점을 (0,0)으로 고정하면 벡터를 사용하여 점을 결정할 수 있으며 그 반대도 마찬가지이므로 일부 표현에서는 유사하게 보입니다. 그러나 그들은 다릅니다. 초록 : 아핀 공간벡터 공간을 비교 합니다 .
PLL

9

정규화, 도트 및 교차 곱과 같은 복잡한 작업을 처리하고 행렬과 함께 여러 좌표계를 사용하여 변환 할 때 협박 요인이 발생할 수 있다고 생각합니다. 강한 지오메트리와 대수 배경을 가지고 있더라도 처음에 반드시 이해하기 쉽지는 않습니다.

또한 적어도 미국에서는 전형적인 고등학교 수학 시퀀스를 겪은 사람들이 선, 경사, 각도 등의 기하학에 대해 생각하는 데 익숙합니다. 그들은 그 물건을 어느 정도 배우지 않고 대신 벡터와 행렬로 생각하십시오. 선형 대수학의 개념이 그렇게 확장 된 것은 아니지만, 사람들이 학교에서 배웠을 가능성이있는 고전 기하학에 사용 된 개념과는 다소 다른 개념 집합입니다.


BTW, 벡터와 점의 구별은 그에 대해 수행 할 수있는 작업에 있습니다. 둘 다 (특정 좌표계에서) 구성 요소 목록으로 표시되므로 "동일한"것처럼 보이지만 허용되는 작업은 동일하지 않습니다. 예를 들어 두 벡터를 더하거나 벡터에 스칼라를 곱할 수 있습니다. 당신은 그것을 포인트로 할 수 없습니다-또는 적어도 그렇게하는 것은 말이되지 않습니다. 그러나 두 점을 빼면 결과는 한 점에서 다른 점으로 벡터가됩니다. 벡터에 점을 추가하여 새 점을 얻을 수도 있습니다.

점과 벡터도 변형과 관련하여 다르게 동작합니다. 즉, 점은 번역의 대상이되고 벡터는 변하지 않습니다. 위치 (점)와 속도 (벡터)로 움직이는 물체의 예를 고려하십시오. 객체를 다른 장소로 번역하면 속도가 아닌 위치를 변경합니다.

사실,이 추론의 선을 더 나아가는 것은 벡터 만이 아닙니다. covectorsbivectors 와 같은 다른 엔티티도 있는데 , 좌표계에 컴포넌트 목록이 있다는 점에서 벡터와 같이 보일 수도 있지만 사용 가능한 연산과 변환에 반응하는 방식에 따라 다르게 동작합니다. 이들은 모두 Grassmann algebra 라는 수학 분야에 속합니다 . 그 외에도 더 일반적 일 수 있으며 텐서 대수를 고려할 수 있습니다 . 그래도 고급 기능입니다.


1
내 혼란의 대부분은 사람들이 벡터가 너무 복잡하다고 생각하는 이유 였으므로 이것이 도움이되었습니다. 아마도 고등학교 기하학을 취하기 전에 프로그래밍에서 기하학을 실제로 사용했기 때문에 그것들이 단순하다는 것을 알 수 있습니다.
starscape

1
위치 (점), 속도 (벡터) 및 가속도 (벡터)가있는 경우 몇 가지 답변에 사용 된 위치 대 속도의 예가 분류됩니다. 속도를 변경해도 가속도는 변하지 않지만 두 벡터입니다. 벡터와 포인트의 구별은 정확하지만주의가 산만합니다. 실제로 모든 게임은 위치를 원점에 대해 암시 적으로 벡터로 저장합니다 (씬 그래프를 사용하는 경우 간접적으로).
Alistair Buxton

1
@AlistairBuxton 나는 당신의 요점을 따르지 않습니다-좌표계를 변환하면 객체의 속도 나 가속도 변화가 없지만 좌표를 회전하면 속도와 가속도가 모두 회전합니다. 그래서 나는 "무너지는 곳"이 보이지 않습니다.
Nathan Reed

2
@AlistairBuxton 그리고 "벡터 위치 저장"과 같은 것은 없습니다. 게임 은 특정 좌표계에서 위치 벡터를 스칼라 구성 요소 목록으로 저장 합니다 . 그것은 그것들을 같은 것으로 만들지 않습니다. 유추하기 위해 : int와 float는 이진 비트 목록으로 저장되지만 다른 의미를 가지며 다른 연산을 갖습니다.
Nathan Reed

1
@Val 당신은 완전히 기본입니다. 벡터는 [p- 위치, v- 속도]가 아닙니다. 그 안에 점과 속도가 없습니다. [x- 속도, y- 속도, z- 속도]입니다 (속도 벡터의 경우). 요점은 이것이 [x-position, y-position, z-position]과 다른 유형의 것입니다.
Nathan Reed

7

벡터는 그렇게 나쁘지 않습니다. 사람들이 익숙하지 않은 약간의 수학이 있습니다.

우선 Vector는 공간에서의 위치를 ​​나타내지 않습니다. 이것은 개념적으로 매우 중요합니다. 벡터는 'North'와 같은 방향과 크기를 나타냅니다. 일반 Math XY 좌표가있는지도에서 'North'는 벡터 (0,1)입니다 (Y 축 위). 이것은 (0,1) 위치와 혼동되어서는 안됩니다. 위치 (0,1)는 원점을 놓을 때마다 1 단위 위에 있습니다. 벡터는 방향과 크기입니다 입니다.

변위 (이동)는 벡터 (두 단위 위로 이동하고 한 단위 오른쪽으로 이동)와 같지만 위치는 아닙니다.

벡터 자체는 사람들이 문제를 일으키는 것이 아닙니다. 일반적으로 벡터에 대한 행렬과 연산입니다.

예를 들어 Vector에 'Rotation Matrix'라는 특수 행렬을 곱하면 벡터가 행렬에 지정된 양만큼 회전합니다. 또한 일부 사람들은 행렬 곱셈에 문제가 있습니다. 익숙하지 않으면 찾아보십시오.

또한 이러한 행렬 (또는 연산)을 함께 '스택'할 수 있습니다. X 축을 기준으로 90도 회전 한 다음 Y 축을 기준으로 90도 회전하는 것과 같습니다. 첫 번째 행렬 M과 두 번째 행렬 N을 호출하면 작업은 v * M * N이됩니다. 그러나 행렬 곱셈은 정식 적이 지 않으므로 v * N * M과 동일하지 않습니다.

그래픽스 프로그래밍에서는 벡터 및 기타 행렬에 대해 훨씬 더 복잡한 연산을 정기적으로 수행합니다. FoV를위한 변환 및 좌표를 화면 공간 등에 배치하는 것은 실제로 그렇게 나쁘지는 않지만 새로운 사람들을 위협 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.