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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрицы http://www.cyberforum.ru/cpp-beginners/thread570402.html
Из заданной матрицы A размером N*M получить матрицу В размером M*(N+M-1) по определенному на рисунке правилу. Недостающие элементы заменить нулями.
Visual C++ Генерация разноцветных эллипсов, которые двигаются по экрану (MFC) помогите мне кто силен с данной библиотекой MFC написать программу которая генерирует на экране разноцветные эллипсы, которые двигаются по экрану. при столкновении с краями эллипс разрушается http://www.cyberforum.ru/cpp-beginners/thread570398.html
Найти сумму ряда C++
Найти сумму ряда с точностью до члена ряда, меньшего 0.0001 для заданного значения и сравнить эту сумму с функцией контроля. Для вычисления последующего значения члена ряда использовать рекуррентную формулу.
C++ MPEG2 - Program Map Table
Необходимо добавить еще один PID в таблицу PMT. На этапе сохранения самой таблицы решил сравнить CRC32, и они не сходяться! Пробывал разные полиномы( 0x04C11DB7 / 0xEDB88320 / 0x82608EDB ), считаю с table id и до конца пока не заканчивается таблица, уже не знаю в чем может быть ошибка. Делаю по следующему алгоритму unsigned long crc32( unsigned char *buf, size_t len, size_t pol ) { ...
C++ ERROR что обозначает ошибка http://www.cyberforum.ru/cpp-beginners/thread570361.html
Что обозначает такие ошибки и как их справить ERROR требуется выражение ERROR требуется указать на функцию(Указатель функции) ERROR Объявленный идентификатор ERROR не вереное значение Кто знает как такие ошибки исправлять ?
C++ Указатели на функции Народ! Прошу у вас помощи ещё раз! Дано такое задание: С заданной точность E (Е>0) вычислить площадь заштрихованной фигуры Метод решения уравнения: Уменьшения интервала и дробления Метод вычисления интегралов: Трапеций И дана вот такая фиговина: http://www.fotolink.su/v.php?id=75586708e5eea25c5797d657e91c6242 Я с простыми интегралами то плохо дружу, а их ещё как то реализовать в... подробнее

Показать сообщение отдельно
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
12.05.2012, 12:03     Принадлежит ли точка многоугольнику
Цитата Сообщение от Gepar Посмотреть сообщение
lazybiz, но он не учитывает точки что идут на линиях соединяющих точки многоугольника
Ну тогда я думаю тебя устроит такой вариант:
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
#define fmin( a, b )    (((a) > (b)) ? (b) : (a))
#define fmax( a, b )    (((a) > (b)) ? (a) : (b))
 
int pointinpoly( double pgon[][2], int numverts, double x, double y )
{
    int     i, crossings = 0;
 
    for ( i = 0; i < numverts; i++ ) {
 
        double x1 = pgon[i][0];
        double y1 = pgon[i][1];
        double x2 = pgon[(i + 1) % numverts][0];
        double y2 = pgon[(i + 1) % numverts][1];
        double d = (y - y1) * (x2 - x1) - (x - x1) * (y2 - y1);
 
        if ( (y1 >= y) != (y2 >= y) ) {
            crossings += y2 - y1 >= 0 ? d >= 0 : d <= 0;
        }
 
        if ( !d && fmin( x1, x2 ) <= x && x <= fmax( x1, x2 )
                && fmin( y1, y2 ) <= y && y <= fmax( y1, y2 ) ) {
            return 1;
        }
    }
    return crossings & 1;
}
Он не такой быстрый как тот, но считает более правильно как мне кажется.
 
Текущее время: 06:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru