Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
1-6565
Jk
2003-03-21 17:09
2003.04.03
Как определить, что дочерняя MDI форма закрыта?


1-6452
CrowD
2003-03-21 15:51
2003.04.03
Как запретить очистку канвы?


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


9-6286
vidiv
2002-11-02 08:13
2003.04.03
Редактор x-files


1-6553
Mic_2000
2003-03-21 15:18
2003.04.03
Подскажите как в текст вставить програмно переход на новую строку




   Наверх