Создание визуально разных цветов с неизвестным размером коллекции цветов

Я пытаюсь на лету генерировать цвета для элемента управления диаграммой. Я хочу, чтобы цвета были визуально отличительными. Я не просто хочу, чтобы цвета отличались от соседних цветов, но хочу, чтобы все цвета были созданы на данный момент.

Я также не хочу знать размер коллекции цветов. Некоторые алгоритмы, которые я видел для этого, требуют, чтобы было известно количество вещей, которые нужно раскрасить. Я хочу реализовать GetNextColor () для своего генератора цветов, поэтому я не буду знать во время выбора, сколько цветов у меня будет в конечном итоге, и выбор числа заранее кажется неправильным.

Я не просто пытаюсь изобразить кучу вещей разными цветами, я интересуюсь этой проблемой и хочу получить обратную связь.

Вот где я:

  • Использование цветового пространства HSV.
  • Оттенок - это значение из [0-360], где 0 и 360 одинаковы (красноватый).
  • Оттенок начинается с 0, я рекламирую 27 (чтобы при циклическом движении не попадал в тот же цвет, на котором он начал ), возьмите MOD 360.
  • Для S и V (оба от 0 до 1) Я начинаю с маленького числа, например . 25
  • Проходя через 20 оттенков
  • Затем возьму большое число, например, 0,85
  • Проходя через 20 hues
  • Затем начните деление пополам, чтобы получить самые отдаленные значения, которые еще не использовались.

Это не очень эффективный метод, он работает нормально, но он мог бы быть гораздо более научным.Все началось с долгих размышлений, а затем превратилось в эту неразбериху.

Есть идеи, как сделать это изящно?

(Это не имеет значения, но я использую C # и отправлю код, когда вернусь к своему компьютеру, на котором уже есть все это.)

6
задан Jason 10 October 2011 в 00:41
поделиться