LINUX.ORG.RU

Визуальное отображение прямоугольных сущностей на плоскости (поле «в клеточку»)

 


0

2

Привет специалистам LOR-а!

Имеется задача - поле «в клеточку» заполнено цифрами, при этом количество клеток много больше уникального количества цифр. По факту эти цифры - идентификаторы сущностей, которые «располагаются» на плоскости. Сущности только прямоугольные и, например, какая-то занимает 4 клетки:

.  .  .  .  .  .
.  1  1  .  .  .
.  1  1  .  .  .
.  .  .  .  .  .
.  .  .  .  .  .

Какая-то одну или две:

.  .  .  .  .  .
.  1  1  .  .  .
.  1  1  .  2  2
.  .  .  .  2  2
.  3  .  .  .  .

Теперь хочется как-то отрисовать это визуально, но возникают случаи вида:

.  .    .    .    .    .
.  .    .    .    .    .
.  223  223  224  224  .
.  223  223  .    .    .
.  .    .    .    .    .

Т.е. рядом дву сущности - 224 и 223, и их ID «похожи». Визуально трудно различить.

В результате возникает проблема: каким образом создать алгоритм перехода от целочисленного ID к строковому так, чтобы строчки максимально отличались друг от друга визуально? P.S. Готового критерия степени «визуального» отличия у меня, разумеется, нет, помимо очевидно факта, что 221 больше отличается от 223, чем, например, от «А0».

Цвет? Шрифт? Если нет возможности менять, а идентификаторов не слишком много, то попробуй рядом с индексом писать какую-то Unicode литеру. Не суть важно какую, просто чтобы каждому номеру соотвествовала своя уникальная легкоотличимая литера.

Deleted
()
Ответ на: комментарий от Deleted

Цвет, один из вариантов, да, но, пока, интересуют только строковые ID. Писать «какую-то» литеру, конечно, можно, интересует наличие готового алгоритма. Маловероятно, что первый сталкиваюсь с такой задачей.

omegatype ★★★
() автор топика

221 больше отличается от 223, чем, например, от «А0»

Имелось в виду меньше?

Может, раскладывать числа на множители (factor) и присваивать каждому множителю символ по его номеру в Юникоде? Довольно глупое решение, но вдруг прокатит.

knovich
()

Что-то странное ты мутишь. Не надо так.

peregrine ★★★★★
()
Ответ на: комментарий от Deleted

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

Но это не точно.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от knovich

Да, хэш - один из вариантов решения «в лоб».

Deleted
()
Ответ на: комментарий от goingUp

Они могут повторяться. Нет, если мы разрешим давать разные цвета одинаковым сущностям, то всё сложится, но тогда я не пони смысла такой раскраски.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Или не могут, хм. ТС, каждая сущность встречается только один раз или может повторяться?

Deleted
()

Отмасштабируй и обводи в рамку, соседние рамки рисуй по-разному:


*** ### ***
*1* #2# *3*
*** ### ***
### *** ###
#4# *5* #6#
### *** ###
*** ### ***
*7* #8# *9*
*** ### ***

Только еще растяни, чтобы не сливалось так

cdshines ★★★★★
()

Если отличаются смежные по горизонтали, то ставь между ними |. Если по вертикали, то верхнее подчеркни.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.