img
00:00
imgDRKB online - Найти точку пересечения прямых
imgimgimg
  Общие вопросы
  Delphi IDE, компиллятор, отладчик, редактор
  Язык программирования Дельфи
  VCL
  Системные функции и WinAPI
  Базы данных
  Работа с файловой системой
  Репортинг, работа с принтером
  Работа с сетью, интернетом, протоколами
  Работа с графикой и мультимедиа
  Математика, алгоритмы
  Работа с матрицами, векторами и списками
  Контрольные суммы и шифрование, проверка контрольных сумм
  Системы счисления
  Комплексные числа
  Арифметика, системы счисления, комплексные числа
  Алгоритмы работы с графикой
  Как нарисовать кривую Безье?
  Как нарисовать график функции?
  Как нарисовать фрактал?
  Как определить лежит ли точка внутри полигона?
  Нахождение угла между радиус вектором и осью OX
  Поиск пересечений графика с осью OX
  RGB --> CMYK
  CMYK --> RGB
  Вращение объектов
  Алгоритм градиентной заливки
  Алгоритмы потухания текста и обратного ему эффекта
  Rotate a 2D Point
  Rotate a 3D Point around another 3D Point
  Найти центр треугольника
  Find the convex hull of 2D points?
  Найти точку пересечения прямых
  Draw a polygon with Gouraud shading?
  Detect simple collision and transparency
  За какое время было создано изображение
  Интерполяция изображений
  2D Бампмэппинг ( Bumpmapping )
  Определить взаиморасположение точки и прямой
  Вычисление площади одноконтурного несамопересекающегося многоугольника
  Преобразование 3D-координат точки в 2D-координаты в перспективе
  Угол поворота точки окружности относительно центра
  Проверка пересечения двух прямоугольников (TRect)
  Центр вписанной в треугольник окружности
  Проверка попадания точки в треугольник
  Проверка пересечения двух отрезков
  Статистика и теория вероятности
  Сортировка
  Сжатие данных
  Комбинаторика
  Поиск, алгоритмы перебора
  Интегралы, производные и дифференциальные уравнения
  Алгоритмы работы с текстом
  Деревья
  Графики функций
  Корреляция и регрессия
  Различные алгоритмы
  Форматы файлов, данных. Конвертация форматов
  ActiveX, COM, DCOM, MIDAS, CORBA, интерфейсы, OLE, DDE
  Разработка приложений
  Kylix
  Delphi.Net
  Развлечения
  
  [drkb=3859] Комментариев: 0 
Найти точку пересечения прямых


delphi
// determine if 2 line cross given their end-points
function LinesCross(LineAP1, LineAP2, LineBP1, LineBP2 : TPoint) : boolean;
Var
  diffLA, diffLB : TPoint;
  CompareA, CompareB : integer;
begin
  Result := False;

  diffLA := Subtract(LineAP2, LineAP1);
  diffLB := Subtract(LineBP2, LineBP1);

  CompareA := diffLA.X*LineAP1.Y - diffLA.Y*LineAP1.X;
  CompareB := diffLB.X*LineBP1.Y - diffLB.Y*LineBP1.X;

  if ( ((diffLA.X*LineBP1.Y - diffLA.Y*LineBP1.X) < CompareA) xor
       ((diffLA.X*LineBP2.Y - diffLA.Y*LineBP2.X) < CompareA) ) and
     ( ((diffLB.X*LineAP1.Y - diffLB.Y*LineAP1.X) < CompareB) xor
       ((diffLB.X*LineAP2.Y - diffLB.Y*LineAP2.X) < CompareB) ) then
    Result := True;
end;

function LineIntersect(LineAP1, LineAP2, LineBP1, LineBP2 : TPoint) : TPointFloat;
Var
  LDetLineA, LDetLineB, LDetDivInv : Real;
  LDiffLA, LDiffLB : TPoint;
begin
  LDetLineA := LineAP1.X*LineAP2.Y - LineAP1.Y*LineAP2.X;
  LDetLineB := LineBP1.X*LineBP2.Y - LineBP1.Y*LineBP2.X;

  LDiffLA := Subtract(LineAP1, LineAP2);
  LDiffLB := Subtract(LineBP1, LineBP2);

  LDetDivInv := 1 / ((LDiffLA.X*LDiffLB.Y) - (LDiffLA.Y*LDiffLB.X));

  Result.X := ((LDetLineA*LDiffLB.X) - (LDiffLA.X*LDetLineB)) * LDetDivInv;
  Result.Y := ((LDetLineA*LDiffLB.Y) - (LDiffLA.Y*LDetLineB)) * LDetDivInv;
end;

function Subtract(AVec1, AVec2 : TPoint) : TPoint;
begin
  Result.X := AVec1.X - AVec2.X;
  Result.Y := AVec1.Y - AVec2.Y;
end;




@Drkb::04116
Взято с сайта http://www.swissdelph...ndex.php
Количество статей: 4366
 
Вход
Имя:
Пароль:
Запомнить
Регистрация Забыли пароль?
Мини-чат :)
Необходима регистрация
Архив мини-чата
19-01-2020 10:47
Programmer
уже подросток
19-01-2020 10:47
Programmer
13 лет этому сайту
19-01-2020 10:45
Programmer
уже 2020
14-01-2020 05:12
Xyu
Кароч дарова
14-01-2020 05:12
Xyu
Dirvachok
12-12-2019 19:32
Prokok
Всем привет!

12-12-2019 18:12
Programmer
admin создай беседу в вк про десксофт
09-12-2019 15:21
spex
ку
07-12-2019 23:51
admin
Это хоумпейдж, для души, с чего бы ему умирать? К тому же на хостинге другие сервисы подняты, для себя.
07-12-2019 22:49
Oleg4260
Мда... тут 2 страницы пролистаешь и уже на год раньше дата сообщения
походу сайт мёртвый. странно, что он до сих пор хостится, и даже админ вчера онлайн утром был.
Статистика
 СегодняВсего
Посетителей3592177940
Запросов23387326452916
Online
Пользователей0
Гостей28
imgimgimgimg
 
img
     00:00