Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Определения пересечения двух кривых Безье   Найти похожие ветки 

 
stray_XXX   (2003-03-21 18:51) [0]

Привет ! Столкнулся с такой проблеммой пользователь задает координаты начальной, конечной точки и рычагов. Рисую кривую Безье потом вторую. Как можно определить пересекаются ли две эти кривые. С отрезками все просто а вот как с кривыми.

{ Определяет пересечение отрезков A(ax1,ay1,ax2,ay2) и B (bx1,by1,bx2,by2),}
{ функция возвращает TRUE - если отрезки пересекаются, а если пересекаются }
{ в концах или вовсе не пересекаются, возвращается FALSE (ложь) }

function Intersection(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2:integer):boolean;
var v1,v2,v3,v4:real;
begin
v1:=(bx2-bx1)*(ay1-by1)-(by2-by1)*(ax1-bx1);
v2:=(bx2-bx1)*(ay2-by1)-(by2-by1)*(ax2-bx1);
v3:=(ax2-ax1)*(by1-ay1)-(ay2-ay1)*(bx1-ax1);
v4:=(ax2-ax1)*(by2-ay1)-(ay2-ay1)*(bx2-ax1);
Intersection:=(v1*v2<0) and (v3*v4<0);
end;


 
DVM ©   (2003-03-21 19:05) [1]

Приравнять, решить уравнение... Но это нереально.
Может перебрать все точки, проверить на принадлежность кривым?


 
BANick   (2003-03-21 20:47) [2]

Узнать точку пересечения действительно трудно (кубическое уравнение разрешимо, но писать алгоритм я бы не стал), но узнать пересекаются они вобще или нет гораздо проще, правда быстро ответить на этот вопрос не могу, а времени у меня почти нет.


 
MBo ©   (2003-03-21 21:41) [3]

спрямляешь кривые (делишь пополам, пока отклонение от прямых отрезков не будет в пределах допуска), дальше уже знаешь



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
1-6481
LyzD
2003-03-24 11:38
2003.04.03
Свернуть программу после запуска


14-6785
les
2003-03-17 12:56
2003.04.03
Можна ли ставить D5 и D7 на один компьютер?


14-6775
hooch
2003-03-15 11:39
2003.04.03
Блок-Схемы и диаграммы


14-6675
sapsi
2003-03-18 08:24
2003.04.03
Отношение к новым


14-6769
Юров Владимир
2003-03-17 16:26
2003.04.03
SynEdit vs. Delphi 6