Пересечение 2-х отрезков - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Есть формула
но эта формула не работает, если один из отрезков параллелен оси Х или У как мне найти в таком случае точку пересечения этих отрезков?

Решение задачи: «Пересечение 2-х отрезков»

textual
Листинг программы
uses crt;
const e=0.0001;
var x1,y1,x2,y2,x3,y3,x4,y4,x,y:real;
begin
clrscr;
writeln('Введите координаты концов первого отрезка:');
readln(x1,y1,x2,y2);
writeln('Введите координаты концов второго отрезка:');
readln(x3,y3,x4,y4);
if(abs(x1-x2)<e)and(abs(x3-x4)<e)or(abs((y2-y1)*(x4-x3)-(y4-y3)*(x2-x1))<e)then
writeln('Отрезки параллельны')
else
 begin
  if(abs(x1-x2)<e)and(abs(y3-y4)<e)then
   begin
    x:=x1;
    y:=y3;
   end
  else if(abs(x3-x4)<e)and(abs(y1-y2)<e)then
   begin
    x:=x3;
    y:=y1;
   end
  else
   begin
    x:=-((x1*y2-x2*y1)*(x4-x3)-(x3*x4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
    y:=((y3-y4)*(-x)-(x3*y4-x4*y3))/(x4-x3);
   end;
  if((x>=x1)and(x<=x2))or((x>=x2)and(x<=x))then
   begin
    writeln('Отрезки пересекаются ');
    write('x=',x:0:2,' y=',y:0:2);
   end
  else write('Отрезки не пересекаются');
 end;
end.

Объяснение кода листинга программы

  1. Создается переменная e со значением 0.0001.
  2. Создаются переменные x1, y1, x2, y2, x3, y3, x4, y4, x, y типа real.
  3. Выводится сообщение «Введите координаты концов первого отрезка:» и считываются координаты первого отрезка.
  4. Выводится сообщение «Введите координаты концов второго отрезка:» и считываются координаты второго отрезка.
  5. Проверяется условие: если расстояние между концами первого и второго отрезков меньше заданной погрешности e и расстояние между концами третьего и четвертого отрезков меньше e, то отрезки параллельны.
  6. Если условие не выполняется, то проверяется следующее условие: если расстояние между концами первого и третьего отрезков меньше e и расстояние между концами второго и четвертого отрезков меньше e, то отрезки пересекаются.
  7. Если ни одно из условий не выполняется, то вычисляются координаты точки пересечения отрезков.
  8. Выводится сообщение «Отрезки не пересекаются».
  9. Если отрезки пересекаются, то выводятся координаты точки пересечения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы