All Forums
 Категория Visio
 Форум Вопросы и ответы
 Пересечение шейпов
Author Previous Topic Topic Next Topic  

mormax

Russia
18 Posts

Posted - 07/07/2004 :  07:08:47
Как отловить пересечение шейпов?
Скажем, имеется шейп под названием "кабель", нужно узнать сколько он пересекает шейпов под названием "провод".

immortal77

30 Posts

Posted - 07/09/2004 :  05:34:26
по координатам концов, не помню формулу, поройся в высшей математике, там точно есть формула для вычисления точки пересечения двух отрезков.
если ненадо вычислять координаты точки пересечения то можно подругому, но функция получиться больше, рекомендую прочитать геометрию
Go to Top of Page

mormax

Russia
18 Posts

Posted - 07/23/2004 :  08:38:55
так, если бы мне нужна была точка, то без проблем - я бы так и сделал.
Но дело в том что мне надо узнать какие на листе шейпы пересекаються, а по точкам проверять этож сколько времени макрос выполняться будет...
может кто-нибудь другой способ подскажет?
например с помощью hittest, или еще есть метод BoundingBox, только я не понял как он работает...
Go to Top of Page

immortal

Russia
391 Posts

Posted - 07/23/2004 :  11:37:01  Visit immortal's Homepage
у меня программа расставляет спуски проводов, цикл 10000, выполняется 5-15 секунд (P4-1500 256mb),
quote:
так, если бы мне нужна была точка, то без проблем - я бы так и сделал.
Но дело в том что мне надо узнать какие на листе шейпы пересекаються

хм, а че если точка пересечения есть, они могут не пересекаться?,
для нахождения точки (точек)пересечения двух линий надо решить систему уравнений:
A1 * x + B1 * y + C1 = 0
A2 * x + B2 * y + C2 = 0

где оба уравнения, уравнения линий, причем надо учесть что при равенстве отношений А1 / А2 и В1 / В2 система не имеет решений (прямые паралельны), для нахождения уравнения прямой, проходящей через 2 точки А1(x1,y1) и A2(x2,y2) получаем (x - x1)/(x2 - x1) = (y - y1)/(y2 - y1),
после нахождения точки пересечения прямых, вам надо определить принадлежит ли эта точка обеим отрезкам.


Edited by - immortal on 07/23/2004 12:16:51
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)