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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Float http://www.cyberforum.ru/cpp-beginners/thread678569.html
Доброго всем времени суток. Я новичок в программировании и только начал учится прошу вашего понимания и помощи. Расскажите пожалуйста что такое float, для чего оно нужно и как использовать, только...
C++ Переставить символы в строке в обратном порядке Добрый вечер. Помогите пожалуйста разобраться в программке. #include <iostream> #include <string> using namespace std; int main() { cout << "Enter string\n"; http://www.cyberforum.ru/cpp-beginners/thread678567.html
C++ заменить символ, если он имеется в тексте, на новое значение считая, что символ входит в каждую строку не более одного раза
Задан текст, состоящий из строк, разделенных пробелом и оканчивающийся точкой.Написать подпрограмму поиска заданного элемента в списке. Используя эту подпрограмму заменить заданный символ, если он...
C++ Повторение в зависимоети от условия
Мне нужно повторять код в зависимости от условия: К примеру: Если условие верно то повторять код 5 раз Иначе не включать цикл. Просто я не хочу прописывать один и тотже код в цикле и вне его
C++ Определить, могут ли три точки быть вершинами треугольника http://www.cyberforum.ru/cpp-beginners/thread678555.html
Всем привет!Помогите решить задачи завтра нужно сдать.Составить алгоритм по блокам,в письменном виде.Если не сложно фотки киньте с алгоритмами написанные вами.Оч нужно.Заранее спасибо)))
C++ Задачка на сравнение факториала с числом Помогите, пожалуйста, решить задачку. Желательно бы с использованием строки. Условие следующее: Дано натуральное число N. Дописать к нему на любую позицию заданную цифру K так, чтобы полученное... подробнее

Показать сообщение отдельно
Ltdeirf
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 3

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

23.10.2012, 17:36. Просмотров 2180. Ответов 2
Метки (Все метки)

Всем привет! Кому не трудно, объясните пожалуйста следующую программу- принадлежит ли точка заданному выпуклому многоугольнику. Очень надо понять ее от начала и до конца(((:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cmath>
 
using namespace std;
 
const double eps = 1e-7;
 
struct point
{
    float x;
    float y;
};
 
double area(point a, point b, point c)
 {
     return 0.5 * (a.x * b.y + b.x * c.y + c.x * a.y - a.y * b.x - b.y * c.x - c.y * a.x);
 }
 
bool ccw (point a, point b, point c)
 {
         return area (a, b, c) > eps;
 }
 
 point min_py (point a, point b)
 {
         return a.y < b.y || (abs (a.y - b.y) <= eps && a.x < b.x) ? a : b;
 }
 
 point max_py (point a, point b)
 {
         return a.y > b.y || (abs (a.y - b.y) <= eps && a.x > b.x) ? a : b;
 }
 
bool polygon (point t, point p[], int n)
 {
     int i, j;
     int count = 0;
     for (i = 0; i < n; ++ i)
     {
         j = (i + 1) % n;
         if (min (p[i].y, p[j].y) < t.y && t.y <= max (p[i].y, p[j].y) &&
             ccw (min_py (p[i], p[j]), max_py (p[i], p[j]), t))
         {
             ++ count;
         }
     }
     return count % 2;
 }
 
int main()
{
    int n;
    cin>>n;
    point p[100];
    point t;
    for(int i=0;i<n;i++)
    {
        cin>>p[i].x>>p[i].y;
    }
    cin>>t.x>>t.y;
    if(polygon(t,p,n))
    {
        cout<<"YES";
        return 0;
    }
    cout<<"NO";
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru