이 두 함수는 선의 시작점부터 끝점까지 색상을 부드럽게 변화시키는 색상 그라데이션을 구현합니다. 실행 방향을 예시와 함께 설명하겠습니다.예시: 빨간색(255, 0, 0)에서 파란색(0, 0, 255)으로 변하는 100픽셀 길이의 선
- get_color 함수:
- 입력: i_line (현재 픽셀 위치), line_size (전체 선의 길이)
- 과정:
- progress 계산: 예를 들어, 50번째 픽셀이라면 progress = 50 / 100 = 0.5
- color_gradient 함수 호출
- color_gradient 함수:
- 입력: color (시작색과 끝색 정보), progress (0에서 1 사이의 값)
- 과정:
a. 빨간색(R) 계산:- delta_r이 -255일 때 (255에서 0으로 변화)
- 50번째 픽셀: r = -255 * 0.5 = -127.5
- r을 16비트 왼쪽으로 시프트: -127 << 16
- delta_g가 0일 때 (변화 없음)
- g = 0
- delta_b가 255일 때 (0에서 255로 변화)
- 50번째 픽셀: b = 255 * 0.5 = 127.5
- 시작 색상(255, 0, 0)에 계산된 r, g, b 값을 더함
- 결과: (128, 0, 127) 근처의 보라색
- 실행 흐름:
- 1번 픽셀: 거의 순수한 빨간색 (255, 0, 2)
- 25번 픽셀: 진한 보라색 (191, 0, 63)
- 50번 픽셀: 중간 보라색 (128, 0, 127)
- 75번 픽셀: 진한 파란색 (64, 0, 191)
- 100번 픽셀: 순수한 파란색 (0, 0, 255)
이 과정을 통해 빨간색에서 파란색으로 부드럽게 변화하는 그라데이션이 만들어집니다. 각 색상 채널(R, G, B)은 독립적으로 계산되어 다양한 색상 변화를 표현할 수 있습니다.
'C Language' 카테고리의 다른 글
선 좌표 초기화와 z축의 의미 (0) | 2025.02.01 |
---|---|
등각법(isometric) 과 원근법(perspective) 계산 (0) | 2025.02.01 |
bresenham 알고리즘 설명 (0) | 2025.01.28 |
정규화를 위한 z의 최소값 지정 (0) | 2025.01.28 |
vim 에서 전체 선택 및 복사하기 (0) | 2025.01.28 |