Главная страница
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.028 c
14-6711
Evgeny
2003-03-15 14:57
2003.04.03
страничка HTML


7-6812
PavelOKES
2003-02-05 09:42
2003.04.03
Смарт-карты


3-6352
Aquarius
2003-03-14 10:04
2003.04.03
Тривиальный вопрос про интерфейс и не только!


3-6294
dums
2003-03-15 17:10
2003.04.03
вопрос по теории БД в IB


3-6378
Ded Moroz
2003-03-14 17:42
2003.04.03
Объединение таблиц в БД