선형대수학, 더 이상 피하지 마세요!
개발자를 위한 벡터(Vector)의 모든 것을 알아봅니다. 벡터의 기본 개념부터 파이썬(Python) 코드 예제, 게임 개발 활용법까지, 가장 쉬운 언어로 설명해 드립니다.
사실 벡터는 우리가 생각하는 것보다 훨씬 직관적이고, 알고 보면 코딩의 세계를 더욱 풍부하게 만들어주는 강력한 도구입니다. 이번 포스팅에서는 선형대수학의 첫걸음, 벡터에 대해 알아보겠습니다.
벡터(Vector)란 무엇일까? - 크기와 방향, 두 마리 토끼를 잡다
우리가 흔히 쓰는 숫자 5, 100, -10 등은 '크기'만 나타냅니다. 이를 스칼라(Scalar)라고 하죠.
하지만 벡터(Vector)는 다릅니다. '크기'와 '방향'을 동시에 가지는 특별한 데이터입니다. 가장 쉽게 상상할 수 있는 이미지는 바로 '화살표'입니다.
- 화살표의 길이 = 크기 (Magnitude)
- 화살표가 가리키는 쪽 = 방향 (Direction)
"동쪽으로 3km 이동"이라는 문장이 있다면, '3km'가 크기, '동쪽'이 방향이 되는 하나의 벡터를 나타내는 셈입니다.
개발자의 코드에 벡터를 담는 법
이렇게 유용한 벡터, 우리 코드에서는 어떻게 표현할까요? 정답은 의외로 간단합니다. 바로 리스트(List)나 배열(Array)을 사용하는 것이죠.
2D 게임에서 캐릭터의 위치가 x좌표: 5, y좌표: 2라고 해봅시다. 이 위치 벡터는 파이썬(Python)에서 다음과 같이 간단하게 표현할 수 있습니다.
# 캐릭터의 위치를 나타내는 2차원 벡터
character_position = [5, 2]
# 캐릭터의 이동 속도를 나타내는 벡터 (오른쪽으로 2, 위쪽으로 1씩 이동)
character_velocity = [2, 1]
print(f"캐릭터의 현재 위치: {character_position}")
print(f"캐릭터의 이동 방향과 속도: {character_velocity}")
보시는 것처럼 벡터는 위치, 속도, 가속도뿐만 아니라 머신러닝에서는 데이터의 여러 특징(feature)을 묶어 표현하는 핵심 '데이터 구조'로 사용됩니다.
벡터 가지고 놀기: 기본 연산 마스터하기
벡터를 만들었다면 이제 직접 움직여봐야겠죠?
벡터의 기본 연산 3가지를 알아보겠습니다.
이 연산들이 바로 동적인 프로그램을 만드는 비결입니다.
1. 벡터 덧셈: 움직임 + 움직임 = 최종 위치
벡터의 덧셈은 간단합니다. 각 위치의 값들을 더해주면 끝!
'A만큼 이동 후 B만큼 추가 이동'하는 개념입니다.
player_pos = [3, 4] # 플레이어의 시작 위치
move_vec = [2, -1] # 이동 벡터 (오른쪽 2, 아래쪽 1)
# 두 벡터를 더해 최종 위치를 계산합니다.
final_pos = [player_pos[0] + move_vec[0], player_pos[1] + move_vec[1]]
print(f"플레이어의 최종 위치: {final_pos}") # 결과: [5, 3]
2. 벡터 뺄셈: 너와 나의 거리, 그리고 방향
뺄셈은 '한 지점에서 다른 지점을 향하는 벡터'를 구할 때 사용됩니다. 게임에서 적이 플레이어를 향해 총을 쏠 방향을 계산할 때 필수적이죠.
player_pos = [10, 8]
enemy_pos = [3, 5]
# 적에서 플레이어를 향하는 방향 벡터
direction_to_player = [player_pos[0] - enemy_pos[0], player_pos[1] - enemy_pos[1]]
print(f"적이 플레이어를 조준할 방향: {direction_to_player}") # 결과: [7, 3]
3. 스칼라 곱셈: 방향은 그대로, 파워는 2배로!
벡터에 일반 숫자(스칼라)를 곱하면 방향은 그대로, 크기(힘)를 조절할 수 있습니다. 캐릭터의 '부스트' 기능을 생각하면 쉽습니다.
move_direction = [1, 1] # 대각선 방향
boost_power = 3
boosted_move = [move_direction[0] * boost_power, move_direction[1] * boost_power]
print(f"부스트 파워가 적용된 움직임: {boosted_move}") # 결과: [3, 3]
마무리하며: 선형대수학의 강력한 첫걸음, 벡터
이번 시간에는 벡터가 (1)크기와 방향을 가진 데이터이며, (2)코딩에서는 리스트/배열로 표현하고, (3)간단한 연산을 통해 동적인 기능을 구현할 수 있다는 점을 배웠습니다. 이것만으로도 여러분은 선형대수학의 가장 중요한 기초를 다진 셈입니다.
다음 포스팅에서는 여러 개의 벡터를 한 번에 다루는 마법의 도구, 행렬(Matrix)에 대해 알아보겠습니다. 벡터를 이해하셨다면 행렬은 훨씬 쉽게 느껴지실 거예요!