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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрицы http://www.cyberforum.ru/cpp-beginners/thread570402.html
Из заданной матрицы A размером N*M получить матрицу В размером M*(N+M-1) по определенному на рисунке правилу. Недостающие элементы заменить нулями.
C++ Найти сумму ряда Найти сумму ряда с точностью до члена ряда, меньшего 0.0001 для заданного значения и сравнить эту сумму с функцией контроля. Для вычисления последующего значения члена ряда использовать рекуррентную формулу. http://www.cyberforum.ru/cpp-beginners/thread570395.html
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 ) { ...
ERROR что обозначает ошибка C++
Что обозначает такие ошибки и как их справить ERROR требуется выражение ERROR требуется указать на функцию(Указатель функции) ERROR Объявленный идентификатор ERROR не вереное значение Кто знает как такие ошибки исправлять ?
C++ Указатели на функции http://www.cyberforum.ru/cpp-beginners/thread570355.html
Народ! Прошу у вас помощи ещё раз! Дано такое задание: С заданной точность E (Е>0) вычислить площадь заштрихованной фигуры Метод решения уравнения: Уменьшения интервала и дробления Метод вычисления интегралов: Трапеций И дана вот такая фиговина: http://www.fotolink.su/v.php?id=75586708e5eea25c5797d657e91c6242 Я с простыми интегралами то плохо дружу, а их ещё как то реализовать в...
C++ Вычислить с заданной точностью значение функции , используя ее разложение в ряд: Вычислить с заданной точностью значение функции , используя ее разложение в ряд: подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
10.05.2012, 21:37  [ТС]
Цитата Сообщение от ser4ega Посмотреть сообщение
Gepar, а мой работает?
Эм, я удивлён, но работает Только мне непонятно вовсе как оно работает, но работает, но тут тоже не всё гладко: попадение на пересечение оно отбрасывает, тоесть для прямоугольника:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool belong(float x[], float y[],float dotx,float doty, int n)
{//n - размерность массива, массивы x и y хранят координаты вершин многоугольника, dotx, doty - координаты точки
     bool b=false;
     for(int i=0;i<n-1;i++)//луч направляем вдоль оси х
     if(dotx<x[i]&&doty<y[i]&&doty>y[i+1]||dotx<x[i]&&doty>y[i]&&doty<y[i+1]) b=!b;//если пересечет многоуолник нечетное число раз - тру
     if(dotx<x[i]&&doty<y[0]&&doty>y[n-1]||dotx<x[i]&&doty>y[0]&&doty<y[n-1]) b=!b;//пересечение с последним ребром
     return b;
};
 
int main()
{
    float x[4]={0,20,30,30};
    float y[4]={0,20,20,0};
 
    cout<<belong(x,y,1,1,4);//ок, 1
    cout<<belong(x,y,0,1,4);//не ок, 0, хотя точка на нижней линии 
}
Сейчас погоняю с многоугольниками посложнее...

Добавлено через 4 минуты
Погонял ещё - и правда пока справляется. В том числе и со всякими пятиугольниками вроде этого
C++
1
2
3
4
    float x[5]={20,10,25,40,30};
    float y[5]={10,20,30,20,10};
 
    cout<<belong(x,y,25,15,5);
Остался только вопрос: как научить алгоритм ещё учитывать то что точка на линии тоже принадлежит многоугольнику.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru