Определение, находится точка слева, справа или на прямой
x1, y1, x2, y2, x3, y3 = map(int, input().split())
q = (x3 - x1) * (y2 - y1) - (y3 - y1) * (x2 - x1)
if q == 0:
print("BOTH")
elif q < 0:
print("LEFT")
else:
print("RIGHT")
#include <bits/stdc++.h>
using namespace std;
int main() {
int x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
int q = (x3 - x1) * (y2 - y1) - (y3 - y1) * (x2 - x1);
if (q == 0) {
cout << "BOTH" << endl;
} else if (q < 0) {
cout << "LEFT" << endl;
} else {
cout << "RIGHT" << endl;
}
return 0;
}
Для точек A(x₁, y₁), B(x₂, y₂) и C(x₃, y₃) вычисляется ориентированная площадь треугольника ABC:
q — это удвоенная ориентированная площадь треугольника ABC. Знак определяет поворот вектора AB к AC:
Ввод: x₁ y₁ x₂ y₂ x₃ y₃ — координаты точек A, B, C
Вывод: LEFT, RIGHT или BOTH
0 0 3 0 1 1
Точка (1,1) находится слева от отрезка (0,0)-(3,0) → вывод: LEFT