lrik64
@lrik64
Начинающий программист

Как переделать программу?

Доброго времени суток,есть следующая задача:на плоскости задан треугольник координатами вершин (x1,y1), (x2,y2), (x3,y3) и произвольная точка (x,y). Составить логическую функцию, проверяющую, лежит ли точка внутри треугольника.
До простого решения я сам додумался используя несколько похожих кодов,но получилось без функции.
Вот код без логической функции:
// тп5.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
#include <locale>
 
int main()
{
    setlocale(LC_ALL, "rus");
    double x1, y1, x2, y2, x3, y3, x, y;
    printf("Введите координаты вершины A => ");
    scanf("%lf%lf", &x1, &y1); // читаем координаты точки A
    printf("Введите координаты вершины В => ");
    scanf("%lf%lf", &x2, &y2); // читаем координаты точки B
    printf("Введите координаты вершины С => ");
    scanf("%lf%lf", &x3, &y3); // читаем координаты точки C
    printf("Введите координаты проверяемой точки => ");
    scanf("%lf%lf", &x, &y); // читаем координаты точки D
    printf(
        (((x - x1)*(y2 - y1) - (y - y1)*(x2 - x1))*((x3 - x1)*(y2 - y1) - (y3 - y1)*(x2 - x1)) >= 0) &&
        (((x - x2)*(y3 - y2) - (y - y2)*(x3 - x2))*((x1 - x2)*(y3 - y2) - (y1 - y2)*(x3 - x2)) >= 0) &&
        (((x - x3)*(y1 - y3) - (y - y3)*(x1 - x3))*((x2 - x3)*(y1 - y3) - (y2 - y3)*(x1 - x3)) >= 0) ?
        "Точка входит в треугольник \n" : "Точка не входит в треугольник \n");
    return 0;
}
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Не очень понятен вопрос.
Вы это имели ввиду?

bool func (double x1, double y1, double x2, double y2, double x3, double y3, double x, double y) {
    return (((x - x1)*(y2 - y1) - (y - y1)*(x2 - x1))*((x3 - x1)*(y2 - y1) - (y3 - y1)*(x2 - x1)) >= 0) &&
           (((x - x2)*(y3 - y2) - (y - y2)*(x3 - x2))*((x1 - x2)*(y3 - y2) - (y1 - y2)*(x3 - x2)) >= 0) &&
           (((x - x3)*(y1 - y3) - (y - y3)*(x1 - x3))*((x2 - x3)*(y1 - y3) - (y2 - y3)*(x1 - x3)) >= 0)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы