Треугольник принадлежит точке - Visual Basic .NET

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

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

Есть такая задача есть три файла первый shape txt там имеется три вершины треугольника , второй Point.txt там указаны точка (x,y) третий файл result.txt Там указывается Внутри треугольника либо снаружи. Имеется примерное начало кода составлял сам
имеются такие вопросы каким кодом ставить точку и как написать что он внутри или снаружи в result.txt Опечатался точка принадлежит треугольнику((

Решение задачи: «Треугольник принадлежит точке»

textual
Листинг программы
// проверка прин. точки треуг. методом относительности положения
function IsPointIn_Relat(aAx, aAy, aBx, aBy, aCx, aCy, aPx, aPy: single): boolean;
// funcs
  function Q(ax, ay, bx, by, atx, aty: single): single;
  begin
    Result := atx * (by - ay) + aty * (ax - bx) + ay * bx - ax * by;
  end;
var
  q1, q2, q3 : single;
begin
  // выбираем определённую ориентацию по вершинам(чтоб было по порядку)
  
  // универсальный
  q1 := Q(aAx, aAy, aBx, aBy, aPx, aPy);
  q2 := Q(aBx, aBy, aCx, aCy, aPx, aPy);
  q3 := Q(aCx, aCy, aAx, aAy, aPx, aPy);
  Result := ((q1 >= 0) and (q2 >= 0) and (q3 >= 0)) or
    ((q1 < 0) and (q2 < 0) and (q3 < 0));
  //}
  {
  // для строгой ориентации по часовой
  Result := (Q(ftx1, fty1, ftx2, fty2, fpx, fpy) >= 0) and
    (Q(ftx2, fty2, ftx3, fty3, fpx, fpy) >= 0) and
    (Q(ftx3, fty3, ftx1, fty1, fpx, fpy) >= 0);
  //}
  {
  // для строгой ориентации против часовой
  Result := (Q(ftx1, fty1, ftx2, fty2, fpx, fpy) <= 0) and
    (Q(ftx2, fty2, ftx3, fty3, fpx, fpy) <= 0) and
    (Q(ftx3, fty3, ftx1, fty1, fpx, fpy) <= 0);
  //}
end;

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

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