본문 바로가기

C Language

그레디언트 컬러 표현 알고리즘

그레디언트 컬러 표현 알고리즘

이 두 함수는 선의 시작점부터 끝점까지 색상을 부드럽게 변화시키는 색상 그라데이션을 구현합니다. 실행 방향을 예시와 함께 설명하겠습니다.예시: 빨간색(255, 0, 0)에서 파란색(0, 0, 255)으로 변하는 100픽셀 길이의 선

  1. get_color 함수:
    • 입력: i_line (현재 픽셀 위치), line_size (전체 선의 길이)
    • 과정:
      • progress 계산: 예를 들어, 50번째 픽셀이라면 progress = 50 / 100 = 0.5
    • color_gradient 함수 호출
  2. color_gradient 함수:
    • 입력: color (시작색과 끝색 정보), progress (0에서 1 사이의 값)
    • 과정:
      a. 빨간색(R) 계산:
      • delta_r이 -255일 때 (255에서 0으로 변화)
      • 50번째 픽셀: r = -255 * 0.5 = -127.5
      • r을 16비트 왼쪽으로 시프트: -127 << 16
      b. 초록색(G) 계산:
      • delta_g가 0일 때 (변화 없음)
      • g = 0
      c. 파란색(B) 계산:
      • delta_b가 255일 때 (0에서 255로 변화)
      • 50번째 픽셀: b = 255 * 0.5 = 127.5
      d. 최종 색상 계산:
      • 시작 색상(255, 0, 0)에 계산된 r, g, b 값을 더함
      • 결과: (128, 0, 127) 근처의 보라색
  3. 실행 흐름:
    • 1번 픽셀: 거의 순수한 빨간색 (255, 0, 2)
    • 25번 픽셀: 진한 보라색 (191, 0, 63)
    • 50번 픽셀: 중간 보라색 (128, 0, 127)
    • 75번 픽셀: 진한 파란색 (64, 0, 191)
    • 100번 픽셀: 순수한 파란색 (0, 0, 255)

이 과정을 통해 빨간색에서 파란색으로 부드럽게 변화하는 그라데이션이 만들어집니다. 각 색상 채널(R, G, B)은 독립적으로 계산되어 다양한 색상 변화를 표현할 수 있습니다.