01. 첫 번째 수업: 데이터의 영혼, 스칼라(Scalar) 와 벡터(Vector)

게임 코드 변수를 짤 때 float 타입 하나로 끝나는 녀석과, struct 구조체나 Array 배열로 선언해야 하는 놈의 덩치 차이를 이해하려면 스칼라와 벡터의 혈통을 정확히 분리해야 합니다.


1. 스칼라 (Scalar): 정적인 숫자

스칼라(Scalar) 라는 단어의 어원은 “사다리, 저울 눈금(Scale)” 에서 왔습니다. 그냥 저울에 물건 올리고 “어? 눈금이 $50$이네” 하고 딱 단일 숫자로 읽고 치워버리는 단순 데이터 찌꺼기들입니다.

  • 스칼라 리스트: 길이($10$m), 시간($5$초), 면적($30\text{m}^2$), 부피, 온도, 질량, 밀도, 그리고 여러분이 주구장창 풀었던 방정식의 $x=3$ 같은 해답들.
  • 장점: 초등학생도 더하기 빼기를 $(10 + 5 = 15)$ 할 수 있다. 직관적이다.
  • 단점: 이 수치들로는 물건을 움직일 수 없다. “어디로?” 가 빠져있기 때문.

스칼라 vs 벡터의 움직임 비교

2. 벡터 (Vector): 살아 숨 쉬는 화살표

벡터(Vector) 의 어원은 라틴어 “운반하는 짐꾼(Vectus)” 에서 왔습니다. 수레를 끌고 어딘가 방향성을 가지고 이동하는 놈이라는 뜻입니다. 눈금만 있는 놈에게 “엔진 휠타이어 방향” 을 달아준 순간, 우주를 지배하는 화살표 객채(Object) 로 태어납니다.

  • 벡터 리스트: 속도(Velocity, 속력+방향), 힘(Force, 펀치력+주먹 날아가는 방향), 가속도, 변위(얼마나 어디로 이동했나).

기하학자들은 이 벡터를 종이에 그릴 때 딱 두 가지만 지키면 언제든 똑같은 복제품(Clone) 으로 렌더링 된다고 규정했습니다.

  1. 시점(Tail, 꼬리) 에서 종점(Head, 대가리) 방향으로 날 선 화살표 촉을 그린다!
  2. 화살표 뼈대의 막대기 길이가 바로 엔진 파워(크기) 를 시각적으로 뜻한다! (화살표가 쥐방울만 하면 속도/데미지가 낮은 것!)

3. 벡터 평등의 법칙 (드래그 앤 드롭 버그)

벡터의 가장 미친듯한 렌더링 치트 능력이 바로 여기에 있습니다. 당신이 허공에 화살표를 한 개 그렸습니다. 마우스 포인터로 화살표 중간 등허리를 꽉 잡고, 모니터 왼쪽 구석으로 드래그 앤 드롭해서 이동시켜 보십시오.

놀랍게도 아까 그린 화살표와 방금 내가 마우스로 옮겨버린 화살표는 수학적으로 “서로 $100\%$ 똑같은, 동일한 벡터 화살표” 로 몽둥이 취급당합니다!

벡터의 평등 (Equality of Vectors): 벡터는 자기 자신의 [크기(막대기 길이)] 와 [방향(촉이 가리키는 앵글)] 만 훼손하지 않고 똑같이 유지한다면? 하늘(좌표) 위 어디로 드롭해서 평행이동 복사를 수만장 찍어내든 모조리 다 “같은 놈 한 마리!” 로 취급하는 미친 복제(Clone) 렌더링을 시전한다!

이게 왜 중요하냐고요? 컴퓨터는 물리 엔진 충돌을 계산할 때, 이리저리 흩어진 잡다한 물체들의 날아올 펀치 화살표(벡터) 들을, 나중에 원점 배꼽 $(0,0)$ 한 자리에다가 죄다 끌고 와서 이리저리 이어 붙이며 단일 합력 수식으로 깔끔하게 디버깅 처리해버릴 수 있는 엄청난 통일 엔진을 가동할 수 있기 때문입니다.

그럼 도대체 저 대각선 방향으로 비스듬하게 날아가는 화살표의 정체를, 컴퓨터 파이썬 코드가 알아먹게 어떻게 숫자로 분해해서 떠먹여 줄까요? 바로 다음 장의 “컴포넌트 X 좌표 / Y 좌표 도륙 내기 분해” 입니다!

서브목차