2011-05-05 4 views
4

제가 목표로 삼고있는이 알고리즘의 목표는 제공된 색상에서 색상 진행을 출력하는 것입니다. 색상의 진행이란 두 색상 (색상 A, 색상 B)간에 "페이드"효과를 생성하고 중간에 모든 색상 값 ((R, G, B) 튜플)을 저장하는 것을 의미합니다. 예를 들어색상 팔레트에서 색상 진행을 만드는 방법

, 무엇을 제공하는 A = (0,0,0) 검정과 총 흰색 B = (255,255,255) 진행의 결과가 될 것이다 전체 인 경우 : 우리가 처음에 흰색 취득하고 점진적으로 검은 색으로 변하도록

P = ((0,0,0),(1,1,1),(2,2,2), .... ,(253,253,253),(254,254,254),(255,255,255)

. 그것은 물론, 흰색과 검정색으로 매우 쉽습니다 (RGB를 255 단계로 한 단계 씩 증가 시킴). 하지만 A = (180,69,1)과 B = (233,153,0) 같은 두 가지 임의의 색상으로이 절차를 수행하려면 어떻게해야합니까 ??

중요 사항 : 16 진수 (또는 다른 종류의 색상 표기법)를 사용하면 더 쉽게 달성 할 수 있지만, 그 유형도 지정할 수 있습니다. (PIL 파이썬 이미징 라이브러리)이므로 호환 가능하다면 괜찮습니다.

분명히 가능한 한 배포해야하며, 진행은 동일해야합니다.

이 알고리즘을 내 프랙탈 생성기 (Mandelbrot Set, 원하는 경우 Google)에서 사용할 수 있도록 알아야하므로 가능한 한 부드럽고 아무런 이상이없는 진행으로 중요합니다.

미리 감사드립니다.

답변

2

RGB 좌표를 HSL 또는 HSV로 변환 한 후 단계별로 RGB로 다시 변환합니다.

+0

http://docs.python.org/library/colorsys.html http://en.wikipedia.org/wiki/HSL_and_HSV –

+0

대단히 감사합니다. : D –

+0

문제가 있습니다. HSL 또는 HSV 색상 사이를 단계별로 조정하는 방법을 모르겠습니다./ –

0

저는 RGB 값을 독립적으로 보간합니다. 이 thread을 참조하십시오.

0

SO 질문에 대한 답변은 Range values to pseudocolor입니다. 특정 색 그라디언트 (색 진행이라고하는 일반적인 이름)를 생성하는 한 가지 방법을 보여주기 때문에 유용합니다.

일반적으로 각 색상의 구성 요소 사이의 차이 또는 델타 값을 계산 한 다음이를 구성 요소 당 부분 델타 양을 얻기 위해 원하는 중간 단계 수로 나누어서 모든 색상 공간에서 임의의 두 색상을 보간 할 수 있습니다 각 단계 후에 적용합니다.

그런 다음 각 첫 번째 색상의 구성 요소 값에서 시작하여 각 중간 단계 색상을 결정하기 위해 해당 분수를 반복해서 추가 할 수 있습니다. 대안 적으로, 그 접근법에 고유 한 산술적 오차는 개시 색의 초기 색 성분 값에 (step_number/total_steps) * fractional_delta을 대신 첨가함으로써 감소 될 수있다.

저는 이것이 @Jim Clay가 자신의 대답에서 말하는 것이라고 생각합니다. 샘플 코드를 원한다면 코멘트에서 그렇게 말하십시오.

0

짐 클레이와 같은 질문을 권장하지만 the top에서 읽으십시오. 또는 interpolation에 관한 위키피디아를 참조하십시오.