C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 Как определить пересекаются ли два прямых отрезка на плоскости ? / Математика / Алгоритмы

 Как определить пересекаются ли два прямых отрезка на плоскости ?
 
 Есть задача: требуется определить пересекаются ли два прямых отрезка
 на плоскости(есть PointStart и PointEnd для обоих отрезков).Пробовал
 математически решить,но привидение пикселей к int все проваливает.
 Кто поможет?
 
 Если надо условие пересечения отрезков, то как вариант:

- Прямая A*x+B*y+C=0 по двум точкам P1(x1,y1), P2(x2,y2):
A = y2-y2
B = x1-x2
C = -A*x1-B*y1 = y1*x2 - x1*y2
- Расстояние от точки S(x0,y0) до прямой:
r = A*x0 + B*y0 + C /sqrt(A*A + B*B)

обозначим как 

Q(P1(x1,y1),P2(x2,y2),S(x0,y0)) = r*sqrt(A*A+B*B) =
 x0*(y2-y1)+y0*(x1-x2) + y1*x2 - x1*y2

- Тогда условие пересечения двуч отрезков(a,b) и (A,B):
Q(a,b;A)*Q(a,b;B)<0 && Q(A,B;a)*Q(A,B;b)<0

пример ф-и на паскале:

function Q(ax,ay,bx,by,tx,ty:longint):real;
begin
Q:=tx*(by-ay)+ty*(ax-bx)+ay*bx-ax*by;
end;




Дебетовая карта Home Credit [CPS] RU