[원래 질문] (https://stackoverflow.com/questions/180/function-for-creating-color-wheels)
주어진 경우 최대 N 먼 색계열 (일부는 연관됨 거리 메트릭은) 등 일부 정렬하려면 수 있는 방법을 올라와 그 첫 번째 M 도 가까이 되는 색계열 agent. 주문하십시오 합리적으로 최대 뚜렷한 설정합니까?
즉, 주어진 여러 가지 색상을 사용할 수 있는, 그래서 많은 색계열 오더할 내놓아야 할 수 있을 것이라는 점을 모두 합리적으로 as I 처음부터 시작하는 것을 알 수 있는 색상은 또한 매우 뚜렷한 (예를 들어, t # 39 레드 isn& 등으로 옆에, 붉은 blue).
그러나 최적이고 무작위) 은 분명 아니다.
또한 같은 날 저항을 할 수 있는 사운드를 함정이거나 경로 그래프 배치하십시오 최소한의 저항. 이 경우, 최대 저항 경로를 요구사항릴리스 반전합니다 생산하는 데 사용되는 처음부터 세트를 얻을 수도 있고, 최대 차이가 as you go) 가 가장 가까운 값을 끝 쪽으로 돌아가야 한다.
예를 들어, 한 가지 방법은 아마도 here& # 39 의 못하며창조된 그리웠댔지.
이렇게 시작하는 것 같다 깔의 바뀌엇어요 색상 즉 멀리 떨어진 후, 다른 모든 별색을 다운 색계열 끝날 때쯤 약간만이라도 나열하십시오 다른 색으로 좀 더 일반적으로.
편집: 내 첫 번째에 대한 회신을 판독값 게시물로의 공간 위의 설명은 맞지 않을 것이라는 정확히요 색계열 때문에 다른 색계열 아니하였으매 목록의 맨 아래에 있지만 크게 닫으십시오 let& # 39 의 말하도다 색상 중 하나 이상이 있는 경우, 어딘가 클러스터와의 색상에는 클러스터와의 약간만이라도 인근에 위치한 이 목록의 시작, 정보기술 (it) 는 일반적으로 약간만이라도 방정식입니다 멀리 떨어진 다른 모든 색계열 총. 만약 그 것이 합리적입니다.
이 문제는 잘 알려져 있으며, 많은 호출됨 컬러 양자화 알고리즘: 팔진트리 (http://en.wikipedia.org/wiki/Color_quantization) 이 사람들을 그러니까말이야 구현됩니까 외곽진입 좋은 효과를 얻을 수 있습니다.
그냥 이 후보가 될 수 있는 기반으로 색상을 수백년간 극대화됩니다 정렬하려면 최소 거리 인덱스 색계열.
색상을 사용하여 유클리드 거리:
public double colordistance(Color color0, Color color1) {
int c0 = color0.getRGB();
int c1 = color1.getRGB();
return distance(((c0>>16)&0xFF), ((c0>>8)&0xFF), (c0&0xFF), ((c1>>16)&0xFF), ((c1>>8)&0xFF), (c1&0xFF));
}
public double distance(int r1, int g1, int b1, int r2, int g2, int b2) {
int dr = (r1 - r2);
int dg = (g1 - g2);
int db = (b1 - b2);
return Math.sqrt(dr * dr + dg * dg + db * db);
}
비록 운영까지도 아무것도 바꿀 수 있습니다. 그냥 요구사항뿐 색상 거리 눈길을 끌고 있다.
public void colordistancesort(Color[] candidateColors, Color[] indexColors) {
double current;
double distance[] = new double[candidateColors.length];
for (int j = 0; j < candidateColors.length; j++) {
distance[j] = -1;
for (int k = 0; k < indexColors.length; k++) {
current = colordistance(indexColors[k], candidateColors[j]);
if ((distance[j] == -1) || (current < distance[j])) {
distance[j] = current;
}
}
}
//just sorts.
for (int j = 0; j < candidateColors.length; j++) {
for (int k = j + 1; k < candidateColors.length; k++) {
if (distance[j] > distance[k]) {
double d = distance[k];
distance[k] = distance[j];
distance[j] = d;
Color m = candidateColors[k];
candidateColors[k] = candidateColors[j];
candidateColors[j] = m;
}
}
}
}
바꾸어 말하자면, 무향 그래프는 크기가 큰 점을 고려할 때, 초기 집합이 N 줄무늬가 있는 모든 색깔의 연결되어 있는 모든 가장 긴 길을 찾으려는 방문 M 노드입니다.
문제를 해결하는 방법이 있지만, 나를 넘어 I& # 39 는 np-완료 그래프화합니다 m 두렵도 단순한 물리 시뮬레이션 실행하십시오 수 있습니다.
거리 함수 () 는 보다 확고한 란색이며 경우 간단한 방법을 최적이고 서브셋 생성 할 수 있습니다.
이 탐욕 알고리즘 /dev/raw/raw200 제공하십시오 좋은 결과를 얻을 수 있습니다.
Rgb 진수 형식으로 인되며 분할할 수 있도록 R, s R& 비교할 수 있는 # 39 와 같은 다른 색상, G, b
Html 같은 형식으로
XX XX XX
RR GG BB
00 00 00 = black
ff ff ff = white
ff 00 00 = red
00 ff 00 = green
00 00 ff = blue
그래서 사용자가 필요로 하는 것은 얼마나 가깝냐고 운영까지도 결정하는 유일한 색상 및 지정하십시오. 차이가 있는 것으로 간주되려면 적정 세그먼트만 다르다.
Do you mean 색상을 선택할 수 있는 집합에서, 여기서 M, N, M 별색을 < 합니다. 예를 들어 n, M 은 M N best 색으로 표현한 공간?
예를 들어, 트루 컬러 (24 비트 색 공간) 를 더 줄일 수 있게 한 8 비트 매핑되었습니다 색 공간 (GIF?).
이 같은 알고리즘을 위한 몇 가지 양자화 (Adaptive 공간 구역] (http://www.imagemagick.org/www/quantize.html) 에서 사용되는 알고리즘입니다 앵거매직.
일반적으로 이러한 알고리즘을 don& # 39 의 색상을 선택, t 그냥 소스 공간을 사용하지만 기존 색상에는 만들어진 새로운 소스 색계열 가장 유사한 대상 공간입니다. 간단한 예를 들어, 원본 이미지의 경우 등 3 가지 색상 있는 두 개의 적색 (또는 서로 다른 강도입니다 등으로 농도 등) 와 3 은 파랑입니다 줄여야 할 수 있으며, 두 대상 이미지가 별색을 빨간색으로 즉 함정이거나 평균, 원래 두 개의 적색 + 푸른 색을 원본 이미지를.
If you need something else didn& # 39, 그럼 내가 이해하지 질문이요:)