Próbuję użyć kolorowej kamery do śledzenia wielu obiektów w przestrzeni. Każdy obiekt będzie miał inny kolor i aby móc dobrze rozróżnić poszczególne obiekty, staram się upewnić, że każdy kolor przypisany do obiektu jest tak różny od dowolnego koloru na jakimkolwiek innym obiekcie, jak to możliwe.
W przestrzeni RGB mamy trzy płaszczyzny, wszystkie o wartościach od 0 do 255. W tej kostce chciałbym rozmieścić n kolorów, aby było tyle odległość między sobą a innymi, jak to możliwe. Dodatkowym ograniczeniem jest to, że ( 0 , 0 , 0 ) i ( 255 , 255 , 255 ) (lub jak najbliżej nich, jak to możliwe) powinny być uwzględnione w nkolory, ponieważ chcę się upewnić, że żaden z moich obiektów nie przyjmuje żadnego koloru, ponieważ tło prawdopodobnie będzie jednym z tych kolorów.
Prawdopodobnie (w tym czarny i while) nie będzie więcej niż około 14.
Z góry dziękuję za wszelkie wskazówki, jak uzyskać te kolory.
Odpowiedzi:
Wszystkie kolory będą na powierzchni kostki RGB, chyba że się mylę, z tego samego powodu, dla którego cały ładunek elektryczny pojawia się na powierzchni przewodów elektrycznych. Sugeruje to następującą metodę określania kolorów:
Kiedy cząstki się zbiegną, masz układ kolorów, interpretując punkty jako kolory. Początkowo cząstki mogą być rozmieszczane losowo na powierzchni sześcianu, z niewielkimi odstępami (pomaga to w kwestiach zbieżności i stabilności). Umieszczanie małych grup na powierzchniach sześcianu powinno działać.
Aby uniknąć utknięcia w lokalnym (a nie globalnym) minimum, możesz „pulsować” jakieś małe przypadkowe pole elektryczne po konwergencji i zobaczyć, czy system powraca do tej samej konfiguracji, czy innej. Jest mało prawdopodobne, aby losowo rozmieszczone cząstki zrobiły to w tym scenariuszu, ale jest to możliwe.
EDYTOWAĆ:
Jak wskazano w komentarzach, założenie, że optymalne rozwiązania powinny leżeć tylko na powierzchni, prawdopodobnie nie dotyczy wszystkich geometrii w przypadku dyskretnym.
Na szczęście ma to niewielki wpływ na resztę opisanej powyżej techniki. Cząstki można początkowo umieścić w dowolnym miejscu; po prostu zostaw trochę miejsca między parami cząstek dla stabilności i pokrycia, a następnie iteruj system do zbieżności, a następnie pulsuj kilka razy (być może ze wzrostem intensywności), aby sprawdzić, czy możesz doprowadzić system do konwergencji do jakiejś innej (być może lepszej) konfiguracji .
Zauważ też, że uważam, że ta metoda zmaksymalizuje coś w rodzaju „(harmonicznej?) Średniej odległości między parami cząstek”. Jeśli chcesz zmaksymalizować minimalną odległość między parami cząstek lub inną średnią (geometryczną?) Między parami cząstek, może to nie dać najlepszego rozwiązania.
W każdym razie uważam, że ta technika da ci łatwy sposób wymyślenia dobrych, w przybliżeniu optymalnych zestawów kolorów ... uzyskanie rzeczywistych „optymalnych” rozwiązań prawdopodobnie nie jest wymagane w twoim przypadku użycia. Oczywiście, jeśli pożądane jest dokładne i możliwe do udowodnienia optymalne rozwiązanie, symulacja numeryczna prawdopodobnie nie jest najlepszym rozwiązaniem.
źródło