05. 다섯 번째 수업: 차원의 확장, 선에서 공간까지 (Dimensions and Space)
우리는 지금까지 $x$축이 하나뿐인 1차원 수직선과 $x, y$ 두 축이 겹쳐진 방바닥 같은 2차원 좌표평면을 다루었습니다. 하지만 실제 우리가 살고 있는 세상이나 현대 가상현실 플랫폼, 3D 영화는 전혀 편평하지 않죠? 입체적입니다!
바로 차원(Dimension)을 업그레이드할 때가 온 것입니다.
학습 목표
- 1차원(선), 2차원(면)을 넘어 3차원(공간)을 어떻게 수치화하는지 깨닫습니다.
- 공간좌표(Space Coordinates)의 Z축 도입과 그 원리를 이해합니다.
- 파이썬 3D 시각화 기술을 이용해 드론이나 3D 게임 캐릭터의 좌표 공간을 구현해 봅니다.
1. 차원: 공간을 통치하는 좌표 축의 개수
컴퓨터 과학과 수학에서는 어떤 위치를 설명하는 데 필요한 ‘축(축의 개수)’을 차원(Dimension)이라고 정의합니다.
- 0차원 (점): 위치만 있고, 길이나 면적은 아예 없는 상태입니다. 데이터로 따지면 단 1바이트조차 없습니다. 어디로도 이동할 수 없습니다.
- 1차원 (선): 오직 자우로만 갈 수 있는 터널. ($x$축 하나 필요) $\rightarrow$ 순서쌍: $(3)$
- 2차원 (면): 좌우, 상하로 게임 팩맨이나 체스판처럼 이동. ($x, y$축 필요) $\rightarrow$ 순서쌍: $(3, 5)$
- 3차원 (입체 공간): 이제 하늘로 떠오르는 엘리베이터나 드론처럼 앞뒤 방향이 추가됩니다. 우리가 흔히 아는 3D 그래픽입니다. ($x, y, z$축 필요) $\rightarrow$ 순서쌍: $(3, 5, 2)$
4차원 공간 데이터 (Tensor)? 여러분이 보는 동영상(Video)은 사실 ‘4차원 배열 행렬(Tensor)’ 데이터 구조입니다! 가로(x), 세로(y), RGB색상(z) 이라는 3차원 그림 한 장에, 시간에 따라 변하는 시간(t) 축을 한 장씩 이어 붙여 재생하기 때문입니다. 좌표는 인공지능 영상 데이터 딥러닝의 핵심 언어입니다!
2. 드론과 공간좌표: z축의 등장
현실에서 드론을 날려 좌표를 특정해 봅시다. “제어탑, 드론 위치 보고합니다! 서쪽으로 $10m$, 앞쪽으로 $5m$, 그리고 고도 $20m$ 높이에 있습니다.”
수학자들은 2차원 $(x, y)$ 좌표 평면에 직각으로 솟아나는 기둥을 세우고, 이것을 $Z$축(고도, 깊이)이라고 이름 붙였습니다. 그리고 드론의 공간좌표는 $(x, y, z) = (10, 5, 20)$ 처럼 아주 깔끔한 배열 변수로 표기하게 됩니다.
좌표축이 세 개가 되면 기준이 되는 원점 $O$는 세 기둥이 뻗어나오는 $(0, 0, 0)$이 됩니다.
3. 파이썬(Python)의 3D 공간 시각화엔진
이제 평면을 부수고 올라가, 3D 로봇이 된 것처럼 점을 허공에 띄워 봅시다!
matplotlib.pyplot은 2D뿐 아니라 mplot3d 도구를 통해 3차원 렌더링 기능을 완벽하게 지원합니다.
import matplotlib.pyplot as plt
# 1. 3D 공간 설정 (가상의 3차원 축스캐너 가동)
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d') # 3D 축 생성 명령어
# 2. 공간상의 데이터 (드론의 위치라고 상상해봅시다)
# x = 10, y = 5, z = 20
drone_x = [10]
drone_y = [5]
drone_z = [20]
# 3D 공간에 점 렌더링하기 ('scatter' 사용)
ax.scatter(drone_x, drone_y, drone_z, color='red', s=100, label="Drone (10, 5, 20)")
# 3. 바닥부터 드론까지 수직선 기둥 그리기 (드론 고도 체감)
ax.plot([10, 10], [5, 5], [0, 20], color='gray', linestyle='dashed')
# 눈금 설정
ax.set_xlim([0, 15])
ax.set_ylim([0, 15])
ax.set_zlim([0, 25])
# 각 축의 이름 붙이기
ax.set_xlabel('X Axis (West-East)')
ax.set_ylabel('Y Axis (South-North)')
ax.set_zlabel('Z Axis (Altitude)')
ax.set_title("3D Space Coordinates: Drone Location")
plt.legend()
plt.show()
이 긴 파이썬 코드를 실행하면 드론이 빈 허공(Z축 높이 20) 위에 빨간 점으로 찍혀 있고, 땅바닥(10, 5, 0)까지 그림자 같은 점선 기둥이 수직으로 서 있는 멋진 3D 그래픽을 얻을 수 있습니다. 마우스를 드래그하여 시점(카메라 뷰) 회전도 해보세요! 좌표값이야말로 3차원 엔진의 생명줄입니다.
학습 정리
- 차원(Dimension): 위치를 식별하는 데 사용된 독립적인 좌표 ‘축’의 개수.
- 공간좌표(Space Coordinates): 3차원 공간에서 $x$축, $y$축 이외에 수직 높이나 깊이를 담당하는 $z$축을 더해 $(x, y, z)$의 형태로 위치를 특정한 수학적 문법.
- 현대 기술 (3D 프린팅 설계 도면, VR 게임 좌표계 등)은 대부분 데카르트의 모델을 확장한 이 3차원 공간좌표 템플릿 안에서 움직인다.