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

Принадлежит ли начало координат треугольнику с вершинами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Кооошечка
 Аватар для Кооошечка
0 / 0 / 0
Регистрация: 02.03.2010
Сообщений: 21
27.09.2010, 16:39     Принадлежит ли начало координат треугольнику с вершинами #1
Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)?
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
#include <iostream>
int main()
{
    float x1,x2,x3,y1,y2,y3,s1,s2,s3,S;
    std::cout << "x1=";
    std::cin >> x1;
    std::cout << "y1=";
    std::cin >> y1;
    std::cout << "x2=";
    std::cin >> x2;
    std::cout << "y2=";
    std::cin >> y2;
    std::cout << "x3=";
    std::cin >> x3;
    std::cout << "y3=";
    std::cin >> y3;
    s1 =abs(((y2)*abs(x2)+(y3+y2)*abs(x3-x2)-(y3)*abs(x3))/2);
    s2 =abs(((y1)*abs(x1)+(y3)*abs(x3)-(y1+y3)*abs(x3-x1))/2);
    s3 =abs(((y1+y2)*abs(x2-x1)+(y2)*abs(x2)-(y1)*abs(x1))/2);
    S  =abs(((y1+y2)*abs(x2-x1)+(y3+y2)*abs(x3-x2)-(y1+y3)*abs(x3-x1))/2);
    std::cout<<"s1="<<s1<<" s2="<<s2<<" s3="<<s3<<" S="<<S;
    if ((S-s1-s2-s3)<0.00001) std::cout<<"prinadlejit";
    else std::cout<<"ne prinadlejit"<<"\n";
    system("pause");
}
в чём ошибка, какие координаты бы не вводила пишет что точка принадлежит, Посмотрите пожалуйста код, в чём ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 16:39     Принадлежит ли начало координат треугольнику с вершинами
Посмотрите здесь:

C++ Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику.
C++ принадлежит ли точка с координатами (x, y) треугольнику
C++ Дана точка A(x; y) на координатной плоскости. Определить, принадлежит ли она треугольнику с вершинами в точках .
C++ Принадлежит ли начало координат треугольнику с вершинами
Определить принадлежит ли точка треугольнику C++
C++ Принадлежит ли начало координат треугольнику
Даны действительные числа x1 , x2 , x3 , y1 , y2 , y3 . Принадлежит ли начало координат треугольнику с вершинами (x1,y1), (x2,y2), (x3, y3)? C++
C++ Определить принадлежит ли точка треугольнику

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
27.09.2010, 21:41     Принадлежит ли начало координат треугольнику с вершинами #2
Кооошечка, не abs, а fabs.
Abs используется для целочисленных значений, и применяя его вы тем самым приводите свое значение к типу int, при этом теряется десятичная часть и остается только целое значение
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
27.09.2010, 23:03     Принадлежит ли начало координат треугольнику с вершинами #3
Кооошечка, Есть еще такой подход.
Составляем уравнения стороны треугольника в виде Ax+Bx+C=0
Подставляем в него координаты проблемной точки x0, y0(в данном случае x0=0, y0=0)
и точки противолежащей вершины. Ежели точка внутри тр-ка - их знаки одинаковы
C
1
  if ((A*x0+B*y0+C) * (A*x2+B*y2+C) < 0) neprenadlegit
И так для каждой из сторон.

Этот подход легко обобщается
а) Для любого выпуклого многоугольника
б) Для 3-мерных и Н-мерных пространнств

Мяяяу
Yandex
Объявления
27.09.2010, 23:03     Принадлежит ли начало координат треугольнику с вершинами
Ответ Создать тему
Опции темы

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