2009-08-28 5 views
2

루비에서 1에서 500 사이의 숫자가 주어진 함수는 더 높은 숫자에 대해 선형으로 어두워지는 6 자리 16 진수 색상 코드를 출력하고자합니다. 그렇게 힘들지는 않지만 어디서부터 시작해야할지 모르겠습니다. 어떻게 구현할 수 있습니까?선형 적으로 증가하는 암흑 알고리즘

편집

색조가 갈 수있는 더 신뢰할 수있는 방법처럼 보인다. 나는 참조 색을주고, 녹색 음영을 말하고, 입력 된 숫자를 기준으로 어두워 지거나 밝게하고 싶습니다.

입력 : 10
출력 (RGB 또는 HSV)에서 컬러 코드 기준 색의 차광이다

입력 : 400
출력 (RGB 또는 HSV)에서 컬러 코드 인 그게 내가 함께 일해야 입력 때문에 기준 색

편집이

I 1과 500 사이에 사용해야하는 유일한 이유는 상당히 어두운 그늘이다. 가까운 숫자가 같은 색으로 매핑되면 괜찮습니다.

+0

정확히 무엇을 묻고 있는지 확실하지 않습니다. 샘플 입출력의 예를 들려 줄 수 있습니까? –

+0

그레이 스케일에는 256 개의 밝기 레벨 만 사용할 수 있습니다. 예 : 0x000000, 0x010101 ... 0xfefefe, oxffffff, 500은 약간 무의미한 것 같습니다. 예를 들어 색조를 변경하려는 경우. 연한 파란색에서 진한 빨간색으로 가면 더 많은 단계가 있지만 문제를 조금 더 명확하게해야합니다. – ScottS

+0

기준 색을 점차 어두워지기를 원하십니까, 아니면 흰색에서 검은 색으로 진행하는 것에 만족하십니까? – peejaybee

답변

2

기본 선형 보간?

// Pseudocode 
function fade_colour(source, factor) 
    const max = 500 
    const min = 1 

    foreach component in source 
     output[component] = round(source[component] * (max - value)/(max - min)) 
    endforeach 

    return output 
endfunction 
+0

@Ransom, 확실합니까? 입력 값 = 1이면 Google에 따르면 소스 [구성 요소]가 다시 나타납니다. 값을 500으로 입력하면 0이됩니다. – strager

+0

죄송합니다. 내 생각은 모르겠지만 공식은 내 것과 정확히 같습니다. ,보다 일반적인. 내 의견을 철회합니다. –

1

그레이 레벨을 반환하지 않는 이유는 무엇입니까? #ffffff를 # 000000으로 변경 하시겠습니까? 어둠과 500 레벨의 어둠은 정말 구분할 수 없으며, 그레이는 256 레벨을줍니다.

+1

감사합니다.하지만 참조 색상을 사용해야합니다. 그레이는 나를 위해서 일하지 않을거야. – Anon

+1

은 숫자 1을 500으로 2로 나눈 값이 1에서 250이되므로 필요한 항목에 적합 할 수 있습니다.(실제 수학 : nuval = oldval * 255/500 - 정수로 나누기 전에 곱하기를 확인하십시오.) –

3

6 자리 16 진수 색상 코드는 RGB 형식입니다. 원하는 것은 HSV에서 작업하는 것입니다 : 색조와 채도를 선택하고 점차적으로 값을 줄입니다. HSV에서 RGB로 변환하여 색상을 출력합니다. 예를 들어 here을 참조하십시오.

+0

다른 링크 : http://en.wikipedia.org/wiki/HSL_and_HSV –

+0

이것은 좋아 보인다. 루비에서 HSV에서 RGB로 변환하는 간단한 방법이 있습니까? – Anon

+0

@William - 예, Jared Updike의 위키피디아 링크는 간단한 공식을 보여줍니다. 필요한 것은 바닥, 모듈 및 산술입니다. 다른 곳에서 지적한대로 – mbeckish

1

참조 색상 만 어둡게하려는 경우 쉽습니다. 가장 밝은 R, G, B 색상이 주어지면 3 가지 값 각각을 (500- 입력)으로 나누고 499로 나눕니다. 각 값을 2 자리 16 진수로 변환하고 #에서 추가하십시오 정면.

+0

은 RGB 색상이 작동하는 방식이 아닙니다. HSV는 이것을위한 더 좋은 컬러 ​​시스템입니다. –

+0

나는 그 이의를 이해하는지 모르겠다. 다른 색상 공간에서 더 쉬울 수있는 다른 작업이 있지만 RGB 색상을 어둡게하는 것은 아주 간단합니다. –