2011-01-30 5 views
1

꽃 바구니를 가지고 있으며 색상으로 태그를 지정하고 정렬하길 원합니다. 이것이 어떻게 행해질 수 있는지에 대한 아이디어는 매우 도움이 될 것입니다.색상별로 항목 정렬

시간 내 주셔서 감사합니다.

+5

나는이 질문을 매우 사랑한다. rofling. 자세한 내용을 입력하십시오. – andrewk

+1

@normalone : 현재 바구니의 내용을 어떻게 표현하고 있습니까? "태그"란 무엇을 의미합니까? "종류"? 당신은 정말로 "정렬"대신 "그룹"을 의미합니까? 그렇지 않은 경우, 일반적으로 3 개의 숫자로 이루어진 숫자로 지정되는 색상을 어떻게 주문합니까? (빨강, 녹색, 파랑)? 빨간색> 파란색입니까 빨간색입니까? 파란색입니까? –

+0

@ John Machin 만약 당신이 rgb/hex 값을 가지고 있다면 스펙트럼의 한쪽 끝에서 다른 쪽 끝으로 색상을 분류하는 것이 실제로 매우 쉽습니다. – Endophage

답변

0

색상 이름순으로 정렬하지 않고 실제 색상으로 정렬하려면 해결책이 명확하지 않습니다. 정렬은 일반적으로 명확한 "보다 큼"및 "미만"의 의미를 정의 할 수있는 엔터티에서 수행됩니다. 그러나 색상은 일반적으로 3 가지 숫자 (RGB 또는 HSV)로 표시되기 때문에 이러한 의미가 없습니다. 당신은 당신 자신의 "주문"을 임의적으로 정의하고 그것을 사용하여 정렬해야 할 것입니다.

+0

이것은 어느 정도 사실입니다. 그러나 "정렬되지 않은"색상 세트와 "정렬 된"색상 세트가 어떻게 생겼는지에 대해 직관적 인 느낌을 가지기를 기대합니다. 문제는 코드에서이를 캡처하는 방법입니다. –

+1

블라인디 (Blindy)의 대답처럼 내 생각이 색조로 주문되었습니다. 그런데 내가 그 생각을 좇을 때 나는 모든 종류의 문제들에 빠져 들었다. 매우 채도가 높은 색상은 어떻습니까? <255,0,0>과 <100,0,0>을 어떻게 분류 하시겠습니까? 색조, 채도, 값을 정렬 할 수 있습니다. 또는 빨간색, 녹색, 파란색 중 하나를 선택합니다. 그게 내가 대답 할 때 얻은 것입니다. – Colin

5

가장 확실한 해결책은 색조로 주문하는 것 같습니다.

이것은 당신이 순서대로 배열을 정렬 할 안정적인 정렬 비교 연산자 줄 것입니다 : 일부 RGB 색상들이 하나의 HLS 양식을하지 않아도 의미에서 타락한 것을 가 enter image description here

참고. 흰색은 그러한 예입니다. 어떻게 처리 할 것인지는 당신에게 달려 있습니다.

+1

실제로 질문에 대답하는 데 +1 (눈이 멀어도 불구하고) –

+0

두 가지 색상이 동일하다면 "채도"에 세로 비율을 추가하십시오. – poitroae

0

Lexicographic ordering의 개념을 사용하면됩니다.

기본적으로 2 색 (C1 = (H1, S1, L1)C2 = (H2, S2, L2)를 말), 우리는 C1 < C2 경우에만 ((H1 < H2) || (H1 == H2 && S1 < S2) || (H1 == H2 && S1 == S2 && L1 < L2)) 경우를 정의하고 C1 == C2 경우에만 H1 == H2 && S1 == S2 && L1 == L2 경우의 HSL 표현을 부여. C1>C2에 대해서도 마찬가지입니다.

색상 순서에 따라 색상 순서가 정해집니다. 색상 채도를 해결하기 위해 채도를 조정합니다. 마지막으로 색조 및 채도 충돌을 해결하기 위해 밝기를 조정합니다.

이 예에서는 우선 순위 순서 H > S > L을 사용했지만 필요에 따라 다른 순서를 사용하거나 다른 색상 (예 : RGB)을 사용하기도합니다.

0

당신은 자바의 색상이 this

+0

이것은 크기가 같거나 작은 경우가 아닌 평등을 비교합니다. – poitroae

1

당신은 그 축에 투사 한 후, 분산의 주요 구성 요소를 가지고 시도 할 수 있습니다 볼 비교할 수 있습니다. (따라서 모든 색상이 빨간색의 음영이면 빨간색은 0이 아니며 녹색과 파란색은 모두 0이고 알고리즘은 축이 1.0, 0.0, 0.0이라고 말하고, 빨간색으로 정렬합니다. 노란색, 그 축은 root (0.5), root (0.5), 0.0, 빨간색과 녹색을 평균하고 그걸 정렬합니다. 색상이 세 개 이상의 별개의 "구름"을 형성하면 제대로 작동하지 않습니다.