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 литеру. Не суть важно какую, просто чтобы каждому номеру соотвествовала своя уникальная легкоотличимая литера.

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

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

omegatype ★★ ()

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

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

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

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

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

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

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

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

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

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


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

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

cdshines ★★★★ ()