|
|
|||||
Разводка соединений электросхемы.
Передо мной встала задача отрисовки электрических схем.
Как это должно выглядеть: пользователь видит набор электронных блоков с группами контактов. Далее он тыкает в один контакт, во второй и между ними отрисовывается линия, изображающая электрическое соединение. Как видно на картинке - они (цветные линии) идут параллельно друг дружке, на одинаковых расстояниях, огибают электронные блоки и не пересекаются между собой (ну, почти). Вопрос: на основе каких алгоритмов можно воспроизвести данный механизм расстановки линий? Нет ли у кого готовых наработок ( тогда просто проект отдам ), каких-то рекомендаций или вообще указания - куда в данном случае имеет смысл копать? Последний раз редактировалось dark256; 28.04.2015 в 16:53. |
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
Все реализации, которые мне довелось видеть пока я учился в университете, подразумевали, что пользователь проводит эти линии вручную.
|
|
|||||
Берем PCAD и наблюдаем там автоматику
|
|
|||||
Создаем сетку NxN пикселов, у каждого компонента - свой размер в блоках, дальше по узловым точкам сетки ищем путь от одного контакта к другому(первое, что приходит в голову - алгоритм А*, но он не самый оптимальный для параллельного вычисления нескольких путей). По ходу дела придется решить еще задачу точной стыковки линии с контактом(который находится внутри графического объекта компонента, и не стыкуется с "блочной" разметкой документа), тут возможны разные решения: вводить несколько уровней детализации сетки, рисовать линию до ближайшего к компоненту узла, а оттуда уже каким-то другим алгоритмом стыковать с целевым контактом...
|
|
|||||
Цитата:
|
|
|||||
Угу. Спасибо. Тоже прикидываю с А-старом....
В результате общени с клиентом решили, что все-таки нехай ручками чел будет строить. С возвожностью ввода дополнительных точек и редактированием. А то проект разрастается черт знает во что. Нечто крайне глобальное выходит. А в целом - конечо же, хочется сделать это красиво... |
Часовой пояс GMT +4, время: 19:05. |
|
« Предыдущая тема | Следующая тема » |
|
|