Предмет: Информатика,
автор: milaset
Напишите алгоритм решения задачи на языке С ++
Принадлежит ли заданая точка внутренней области треугольника .
Входные данные
x1 y1
x2 y2
x3 y3 - координаты вершин треугольника
x0 y0 - координаты данной точки
Исходные данные
Ответ " YES " или "NO " .
Ответы
Автор ответа:
0
В основу решения возьму тот факт, что точка лежит внутри треугольника только в том случае, если сумма площадей трех образованных этой точкой и вершинами треугольников треугольников равна площади самого треугольника. Для нахождения площади треугольников использую формулу векторного произведения, деленного пополам.
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
int x1, y1, x2, y2, x3, y3, x0, y0;
scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x0, &y0);
if (abs((x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0)) +
abs((x1 - x3) * (y0 - y3) - (x0 - x3) * (y1 - y3)) +
abs((x0 - x3) * (y2 - y3) - (x2 - x3) * (y0 - y3)) ==
abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)))
{
printf("YES");
} else {
printf("NO");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
int x1, y1, x2, y2, x3, y3, x0, y0;
scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x0, &y0);
if (abs((x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0)) +
abs((x1 - x3) * (y0 - y3) - (x0 - x3) * (y1 - y3)) +
abs((x0 - x3) * (y2 - y3) - (x2 - x3) * (y0 - y3)) ==
abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)))
{
printf("YES");
} else {
printf("NO");
}
return 0;
}
Похожие вопросы
Предмет: Математика,
автор: Illia12334
Предмет: Українська література,
автор: uliazadan
Предмет: Математика,
автор: fdae
Предмет: Физика,
автор: Dgoker2