Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, Аноним, Вы писали:
А>>Доброго времени суток, наверно многие видели на различных диаграммах(UML, IDEF... ) что между объектами схемы проводится ломаная линия, т.е не просто от точки А до точки Б, а она "ломается", всегда под прямым углом, если например объекты находятся на разных высотах по оси Y. Собственно интересует, как делают эту "ломанность"? Объясните на пальцах, можно сдобрить это дело кусочками кода
А>>Пример на картинке: http://solarix.ru/for_developers/api/sql/oracle-schema.gif или вот: http://www.egoroff.spb.ru/images/1/14/1.gif
SVZ>Если нужен простой случай — при рисовании связи не учитываются ни другие связи, ни зазоры между блоками, то достаточно обрабатывать несколько шаблонных вариантов.
SVZ>Скажем, для горизонтальных связей...
SVZ>Связь может выходить из восточной или западной стенки, входить может либо в восточную, либо в западную стенку.
SVZ>Всего 4 комбинации.
SVZ>Для каждой из 4 комбинаций учесть взаимное положение исходной и целевой стенок: исходная стенка либо справа от целевой, либо слева.
SVZ>А учитывая, что для пар "восточная-восточная" и "западная-западная" формы связей будут совпадать при любом взаимном расположении, то всего получается 6 различных форм связей.
SVZ>Вот и все.
SVZ>То же самое для вертикальных связей.
SVZ>Для сложного случая читать про канальную трассировку.
Хм... интересно, я думал что для этого есть какой-то алгоритм, а получается что нужно просто обработать все возможны варианты положения блоков относительно друг друга, спасибо )