profile
Опубликовано 6 лет назад по предмету Информатика от VNBor34rus

Пусть даны вещественные числа x^1, x^2, x^3, y^1, y^2, y^3 принадлежит ли начало  координат треугольнику с вершинами (x^1,y^1) (x^2,y^2) (x^3, y^3)

  1. Ответ
    Ответ дан Аккаунт удален
    var
      a:array[1..3,1..2]of real;
      b:array[1..3]of real; //массив для координат пересечения сторон с ОХ
      i,j,z:integer;
    // (y1-y2)x+(x2-x1)y+(x1y2-x2y1)=0 - ур-е прямой, прохоходящей через 2 точки
    // тогда x=(x2y1-x1y2)/(y1-y2) - координата ее пересечения с осью х  
    // найдем координаты пересечения сторон с осью х
    function cross(x1,x2,y1,y2:real):real;
    begin
    result:=(x2*y1-x1*y2)/(y1-y2);
    if ((result>x1) and (result>x2)) or ((result<x1) and (result<x2)) then
      result:=1 //это точка пересечения не самой стороны, а ее продолжения
                    //поскольку в дальнейшем нам нужны будут знаки координат,           
                    //ей приписываем положительной значение, чтобы она не влияла
                    //на конечный результат
    end;

    begin
    for i:=1 to 3 do
      begin
      writeln('Введите координаты х,у вершины:');
      readln(a[i,1],a[i,2]);
      end;
    z:=1;
    for i:=1 to 3 do
      begin
      j:=i+1;
      if j>3 then j:=1;
      b[i]:=cross(a[i,1],a[j,1],a[i,2],a[j,2]);
      z:=sign(b[i])*z;
      end;
    write('Начало координат ');
    if z<0 then writeln('принадлежит треугольнику')
      else writeln('не принадлежит треугольнику');
    end.
Самые новые вопросы