문제

다음 시나리오를 고려해 봅시다. 흰색에서 흰색에서 파란색, 흰색에서 분홍색, 흰색에서 주황색까지 코드 색상을 생성 할 수있는 함수.

색상 코드는 0에서 255 사이의 값이있는 RGB 형식입니다.

어떤 아이디어? 유사 코드 나 그러한 알고리즘에 대한 링크를 줄 수 있습니까?

도움이 되었습니까?

해결책

당신이 뒤 따르는 것처럼 들립니다 선형 보간 - 귀하의 경우, 흰색에서 지정된 색상으로 보간됩니다. 예를 들어 C#에서 :

public IEnumerable<Color> Interpolate(Color from, Color to, int steps)
{
    int range = steps-1; // Makes things a bit easier
    for (int i=0; i < steps; i++)
    {
        // i is the proportion of the "to" colour to use.
        // j is the proportion of the "from" colour to use.

        int j = range - i;
        int r = ((from.R * j) + (to.R * i)) / range;
        int g = ((from.G * j) + (to.G * i)) / range;
        int b = ((from.B * j) + (to.B * i)) / range;
        yield return new Color(r, g, b);
    }
}

물론 선형 보간 외에 다른 방법이 있지만 가장 간단 할 것입니다. 오버플로의 가능성을 고려해야하기 때문에 많은 단계 나 더 큰 값이 있으면 까다로워집니다. 이 경우 괜찮을 것입니다. 256 개 이상의 단계를 원할 가능성이 높고 최대 값은 255이므로 한계에 가까워지지 않습니다. int에스.

편집 : 의견에 언급 된 바와 같이, RGB는 선형 보간을 사용하는 최상의 도메인이 아닐 수 있습니다. /rgb 값에서로 변환하는 것이 가장 좋습니다. HSL 또는 HSV, 그리고 그것들을 보간하는 것. 플랫폼에 따라 쉽거나 까다로울 수 있습니다. 이전 문장의 Wikipedia 링크는 제공되지 않은 경우 적절한 계산에 대한 공식을 제공합니다.

다른 팁

연산:

  1. 흰색의 RGB 값을 찾으십시오
  2. 다른 색상의 RGB 값을 찾으십시오 (예 : 빨간색, 파란색, 분홍색, 주황색을 언급).
  3. RGB 구성 요소가 두 극단의 RGB 구성 요소 사이에 산술적으로 RGB 값을 계산합니다.

예를 들어, 하나의 극단이 (0,0,0)이고 다른 극단이 (0,255,255)이면이 두 색상 사이의 반쯤 값은 (0,128,128) ... 두 값은 (0,64,64)입니다.

알려진 특정 포인트를 통해 색상을 보간하는 특정 포인트는 종종 그래프 데이터를위한 색 구성표를 구성하는 데 사용됩니다. 명백한 보간 공식에 대한 대안은 표현 뒤에 디자인이있는 색 구성표를 선택하는 것입니다. 그러한 계획의 좋은 근원은입니다 컬러 브루어.

보간해야하더라도 잘 설계된 색 구성표에서 시작하면 훨씬 더 유용한 결과를 얻을 수 있습니다.

그라디언트를 원하는 두 가지 색상으로 시작하여 R, G 및 B 부품으로 나눕니다.

퇴색하려는 "단계"수를 결정하십시오.

R, G 및 B 부품의 차이를 단계 수로 나눕니다. 이제 각 색상마다 "단계 차이"가 있습니다.

각 단계를 살펴보고 각 반복마다 색상 값에 단계 차이를 추가하십시오. 둥글게 정수 마지막 당신이하는 일.

어떤 색상으로 바꾸고 싶습니까? 흰색에서 빨간색은 255 255 255로 시작하고 255 0을 가질 때까지 두 번째 두 개를 줄이는 경우 일 것입니다. Blue는 마지막 값을 유지하고 0 0 255 등으로 끝나기 위해 감소합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top