Треугольник принадлежит точке - 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;