Форум программистов, компьютерный форум CyberForum.ru

Определить и напечатать, находится ли точка в треугольнике - C++

Восстановить пароль Регистрация
 
dds
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 4
12.11.2012, 23:48     Определить и напечатать, находится ли точка в треугольнике #1
добрый вечер.
помогите пожалуйста решить задачи срочно нужно(
1. Треугольник и точка. Заданы прямоугольные координаты x1, y1, x2, y2, x3, y3 вершин треугольника и координаты x, y точки. Определить и напечатать, находится ли точка в треугольнике. Погрешностями вычислений пренебречь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 23:48     Определить и напечатать, находится ли точка в треугольнике
Посмотрите здесь:

C++ Создать класс, описывающий точки, определить в каком координатном угле находится точка: найти ошибку
Точка в треугольнике C++
Определить находится ли точка в площади треугольника C++
C++ По заданным координатам определить, где находится точка.
C++ Определить, находится ли точка в треугольнике
Определить, находится ли точка с координатами (x,y,z) внутри шара C++
C++ С++ использование функций. Определить, находится ли точка М(х,у) внутренней области треугольника
C++ Определить номер координатной четверти, в которой находится данная точка
C++ Определить находится ли данная точка в середине многоугольника, или нет?
Определить, находится ли точка с пространственными координатами внутри параллелепипеда C++
C++ Определить min элемент главной диагонали матрицы и напечатать столбец, в котором он находится
Определить находится ли точка в окружности C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DeLipFin
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 15
01.04.2015, 23:44     Определить и напечатать, находится ли точка в треугольнике #2
dds, Суть такая же как и здесь
Миниатюры
Определить и напечатать, находится ли точка в треугольнике  
DeLipFin
0 / 0 / 0
Регистрация: 25.02.2015
Сообщений: 15
02.04.2015, 00:07     Определить и напечатать, находится ли точка в треугольнике #3
dds, Так же я думаю нужно будет в программе написать уравнение сторон треугольника, и получается что не 8 будет переменных, а 11
mihey1993
322 / 48 / 19
Регистрация: 07.09.2014
Сообщений: 216
02.04.2015, 11:22     Определить и напечатать, находится ли точка в треугольнике #4
Для того, чтобы определить находится ли точка D в треугольнике ABC , можно проверить что выполняется следующее равенство для площадей:
http://www.cyberforum.ru/cgi-bin/latex.cgi?S_{ABC} = S_{ABD} + S_{BCD} + S_{ACD}
По заданным координатам точек площадь считается следующей формулой:
http://www.cyberforum.ru/cgi-bin/latex.cgi?S_{ABC} = \frac{1}{2} |(x_B - x_A)(y_C - y_A) - (x_C - x_A)(y_B - y_a)|

Так что в общем и целом получается проверка будет выглядеть так(если я конечно же нигде не накосячил):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cmath>
 
using namespace std;
 
struct point{
    double x,y;
};
 
double area(point a,point b,point c){
    return (0.5*abs((b.x - a.x)*(c.y - a.y) - (c.x - a.x)*(b.y - a.y)));
}
 
int main()
{
   point a,b,c,d;
   a.x = 1.0;a.y = 1.0;
   b.x = 3.0;b.y = 5.0;
   c.x = 4.0;c.y = 2.0;
   d.x = 3.5;d.y = 3.5;
   if (abs((area(a,b,c) - area(a,b,d) - area(a,c,d) - area(b,c,d)))<1e-5){
       cout << "Yes";
   }
   else {
       cout << "No";
   }
   return 0;
}
Ilot
Модератор
Эксперт С++
1778 / 1153 / 223
Регистрация: 16.05.2013
Сообщений: 3,041
Записей в блоге: 5
Завершенные тесты: 1
02.04.2015, 11:52     Определить и напечатать, находится ли точка в треугольнике #5
Цитата Сообщение от mihey1993 Посмотреть сообщение
можно проверить что выполняется следующее равенство для площадей
Проверить то можно, но это крайне не удачный подход ибо сравнение на равенство чисел с плавающей точкой некорректно. В данном случае следует поступить следующим образом. Нужно проверять чтобы векторные произведения (r2 - r1)x(r - r1), (r3 - r2)x(r - r2), (r1 - r3)x(r - r3) имели один знак. К примеру первое умножение запишется ввиде:
C++
1
bool sign1 = (x2 - x1) * (y - y1) - (y2 - y1) * (x - x1);
Аналогично все остальные. Просто циклически меняем индексы.
Yandex
Объявления
02.04.2015, 11:52     Определить и напечатать, находится ли точка в треугольнике
Ответ Создать тему
Опции темы

Текущее время: 05:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru