Главная страница
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.013 c
7-6804
Esc
2003-02-09 13:32
2003.04.03
Свой сервис win2k


14-6662
Егорычев Михаил
2003-03-17 18:39
2003.04.03
Browser на API - окне


14-6664
рщеищн
2003-03-18 10:05
2003.04.03
Функция проверки правописания.


4-6870
cmt77
2003-02-06 20:08
2003.04.03
dll & hooks = access violation


3-6302
Инна
2003-03-17 10:15
2003.04.03
ADOTable и ADOQuery