Знаковая площадь треугольника
Знаковая площадь треугольника
Определение
Пусть даны три точки: , , .
Знаковая площадь треугольника
Пусть даны три точки: , , .
Рассмотрим треугольник .
Знаковая площадь — это обычная площадь треугольника, но:
Если мы умеем считать знаковую площадь, то автоматически умеем:
Сравним направления двух отрезков:
Оказывается, достаточно посчитать одно выражение:
Это число:
Это и есть удвоенная знаковая площадь.
Потому что настоящая площадь треугольника равна:
Но во всех проверках направления поворота деление на 2 не требуется, поэтому почти всегда используют именно величину .
long long triangle_area_2(
long long x1, long long y1,
long long x2, long long y2,
long long x3, long long y3
) {
return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
}
double triangle_area(
long long x1, long long y1,
long long x2, long long y2,
long long x3, long long y3
) {
return abs(triangle_area_2(x1, y1, x2, y2, x3, y3)) / 2.0;
}
bool clockwise(
long long x1, long long y1,
long long x2, long long y2,
long long x3, long long y3
) {
return triangle_area_2(x1, y1, x2, y2, x3, y3) < 0;
}
bool counter_clockwise(
long long x1, long long y1,
long long x2, long long y2,
long long x3, long long y3
) {
return triangle_area_2(x1, y1, x2, y2, x3, y3) > 0;
}
bool collinear(
long long x1, long long y1,
long long x2, long long y2,
long long x3, long long y3
) {
return triangle_area_2(x1, y1, x2, y2, x3, y3) == 0;
}