move_x와 move_y는 화면상에서 지도의 중심점을 어디에 위치시킬지 결정합니다.
c
cam->move_x = WINDOW_WIDTH / 2;
cam->move_y = WINDOW_HEIGHT / 2;
이 설정의 의미와 효과를 자세히 설명하겠습니다:
의미
WINDOW_WIDTH / 2와 WINDOW_HEIGHT / 2는 화면의 정중앙 좌표를 나타냅니다.
이 값들을 move_x와 move_y에 할당함으로써, 지도의 중심이 화면 중앙에 오도록 설정합니다.
예시
예를 들어, 창의 크기가 다음과 같다고 가정해 봅시다:
WINDOW_WIDTH = 1000
WINDOW_HEIGHT = 800
이 경우:
cam->move_x = 1000 / 2 = 500
cam->move_y = 800 / 2 = 400
따라서 지도의 중심점은 화면 좌표 (500, 400)에 위치하게 됩니다.
효과
중앙 정렬: 지도가 화면 중앙에 위치하여 시각적으로 균형 잡힌 표현이 가능합니다.
일관된 초기 뷰: 창 크기에 관계없이 항상 지도가 중앙에 표시됩니다.
사용자 경험 개선: 사용자가 처음 프로그램을 실행했을 때 지도 전체를 한눈에 볼 수 있습니다.
이동의 기준점: 이후 사용자가 지도를 이동시킬 때, 이 중심점을 기준으로 이동이 이루어집니다.
추가 고려사항
실제 렌더링 시에는 이 move_x와 move_y 값을 사용하여 모든 점의 좌표를 조정해야 합니다.
사용자가 지도를 드래그하거나 이동시킬 때, 이 값들을 업데이트하여 새로운 위치를 반영할 수 있습니다.
이러한 방식으로 초기 카메라 위치를 설정함으로써, 사용자에게 더 나은 초기 뷰를 제공하고, 이후의 조작을 위한 기준점을 마련할 수 있습니다.
scale_z = 1
▸ 설정 이유
기본 축척 유지: Z축 높이 변화를 1:1 비율로 유지하기 위한 초기값
중립적 시작점: 사용자가 직접 조정하기 전까지 높이 왜곡 없이 원본 데이터 표현
조작 가능성: 이후 +/- 키로 확대/축소 가능한 유연성 확보
예시
지점 A(z=50)와 B(z=100)가 있을 때:
scale_z = 1 → 50px, 100px 차이
scale_z = 0.5 → 25px, 50px 차이 (높이 압축)
alpha, beta, gamma
▸ 3축 회전 각도 (단위: 도)
변수 축 시각적 효과 일반적 명칭
alpha X축 수직 틸트 (위아래 기울기) Pitch
beta Y축 수평 회전 (좌우 돌리기) Yaw
gamma Z축 회전 틸트 (좌우 기울기) Roll
▸ 초기값 0 설정 이유
기준 좌표계 정렬
X축: 수평 (지도 가로)
Y축: 수직 (지도 세로)
Z축: 화면 수직 (높이)
사용자 조작 전 기본 뷰
3D rotation axes diagram
실제 사용 사례
c
// 30도 상승 각도
cam->alpha = 30;
// 45도 수평 회전
cam->beta = 45;
// 오른쪽으로 15도 기울기
cam->gamma = 15;
이 설정시 비행기 조종석 시점 같은 동적 표현 가능
통합적 효과
이 초기값들은 다음과 같은 렌더링 파이프라인을 구성합니다:
중앙 정렬: move_x, move_y
비율 조정: scale_factor, scale_z
각도 조정: alpha, beta, gamma
이러한 설계는 3D 뷰어에서 표준적으로 사용되는 카메라 제어 패턴을 구현한 것입니다.
'C Language' 카테고리의 다른 글
2차원 배열을 사용한 3차원 표현방법 (0) | 2025.02.06 |
---|---|
pivoting 상세설명 (0) | 2025.02.06 |
선 좌표 초기화와 z축의 의미 (0) | 2025.02.01 |
등각법(isometric) 과 원근법(perspective) 계산 (0) | 2025.02.01 |
그레디언트 컬러 표현 알고리즘 (0) | 2025.01.28 |