Определите, принадлежит ли начало координат треугольнику с заданными вершинами - C (СИ)
Формулировка задачи:
Даны вещественные числа x1, y1, x2, y2, x3, y3. Определите, принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3).
Решение задачи: «Определите, принадлежит ли начало координат треугольнику с заданными вершинами»
textual
Листинг программы
#include <stdio.h> struct point { double x; double y; }; double calc_position(struct point a, struct point b, struct point d) { return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x); } bool check_side(struct point a, struct point b, struct point c, struct point d) { return calc_position(a, b, c) * calc_position(a, b, d) >= 0; } int main() { struct point a, b, c, d; a.x = -9; a.y = 2; b.x = 5; b.y = 4; c.x = -3; c.y = -10; d.x = 0; d.y = 0; printf( check_side(a,b,c,d) && check_side(b,c,a,d) && check_side(c,a,b,d) ? "Принадлежит" : "Не принадлежит"); return 0; }
Объяснение кода листинга программы
- Включаем файл библиотек стандартного ввода/вывода
- Объявляем структуру point для представления точки в двумерном пространстве
- Определяем функцию calc_position для вычисления скалярного произведения векторов
- Определяем функцию check_side для проверки принадлежности точки к треугольнику
- В функции main создаем и инициализируем переменные структур point для представления вершин треугольника и точки, для которой проверяем принадлежность
- Вызываем функцию check_side с передачей всех вершин треугольника и точки, для которой проверяем принадлежность
- Выводим на экран результат проверки принадлежности точки к треугольнику
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д