Лежит ли точка M(xm,ym) внутри треугольника, заданного координатами своих вершин A(xa,ya), B(xb,yb), C(xc,yc) на плоскости
Если точка принадлежит области (область включает границы), выведите слово YES, иначе выведите слово NO. Решение должно содержать функцию IsPointInTriangle(x1, y1, x2, y2, x3, y3), возвращающую True, если точка принадлежит области и False, если не принадлежит. Основная программа должна считать координаты вершин треугольника, вызвать функцию IsPointInTriangle и в зависимости от возвращенного значения вывести на экран необходимое сообщение.
Формат ввода
Вводится шесть действительных чисел x1, y1, x2, y2, x3, y3 - координаты вершин треугольника.
Затем вводится два числа x1, y1 - координаты точки.
Формат вывода
Выведите ответ на задачу.
Примеры
Тест 1
Входные данные:
-1
0
1
0
0
1
0
0
Вывод программы:
YES
Тест 2
Входные данные:
-1
0
1
0
0
1
0
1
Вывод программы:
YES
Тест 3
Входные данные:
-1
0
1
0
0
1
0
2
Вывод программы:
NO
Answers & Comments
Ответ:
def IsPointInTriangle(x1, y1, x2, y2, x3, y3, xm, ym):
a = (x1 - xm) * (y2 - y1) - (x2 - x1) * (y1 - ym)
b = (x2 - xm) * (y3 - y2) - (x3 - x2) * (y2 - ym)
c = (x3 - xm) * (y1 - y3) - (x1 - x3) * (y3 - ym)
return (a >= 0 and b >= 0 and c >= 0) or (a <= 0 and b <= 0 and c <= 0)
xa, ya, xb, yb, xc, yc = map(float, input().split())
xm, ym = map(float, input().split())
if IsPointInTriangle(xa, ya, xb, yb, xc, yc, xm, ym):
print('YES')
else:
print('NO')
Объяснение: