Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расчет вхождения точки в замкнутую область, разбор примера на Си 
V
    Опции темы
barin_Student
Дата 28.2.2012, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Добрый день форумчане!
Есть задача: существуют треки с массивом координата вида:
[долгота(double)], [ширина(double)], пример:
[40.44][41.42]
[40.44][41.43]... и тд. Требуется определить к каким областям страны относиться трек. Для этого прийдеться брать каждую точку и сверяться входит ли точка трека в область Области(сорри за масло-масленное), так вот проблема с математикой. Нашел примеры, в которых описанна данная реализация, а именно расчет вхождения точки в замкнутой области. Приведу пример, который нашел:
Код

template <class T>
bool pt_in_polygon(const T &test,const std::vector &polygon)

{
    if (polygon.size()<3) return false; 
        std::vector::const_iterator end=polygon.end();
        T last_pt=polygon.back(); 
        last_pt.x-=test.x;
        last_pt.y-=test.y;
        double sum=0.0;
        for( std::vector::const_iterator iter=polygon.begin();iter!=end;++iter)
        {
         T cur_pt=*iter;
                 cur_pt.x-=test.x;
                 cur_pt.y-=test.y;
                 double del= last_pt.x*cur_pt.y-cur_pt.x*last_pt.y;
                 double xy= cur_pt.x*last_pt.x+cur_pt.y*last_pt.y;
                 sum+=(atan((last_pt.x*last_pt.x+last_pt.y*last_pt.y - xy)/del)+ atan((cur_pt.x*cur_pt.x
+cur_pt.y*cur_pt.y- xy )/del));
                last_pt=cur_pt;
        }
        return fabs(sum)>eps;

 

}

Утомился я смотреть на Си, ребят как это выглядит в java? Либо кто решал подобную задачу,- подскажите каким образом мне решить мою задачу, буду очень благодарен;).
ПС: области страны-это тоже набор точек координат,-они замкнутые, если начинаются с координаты [40.70,70.52] то и сходиться в этой же точке.



Это сообщение отредактировал(а) barin_Student - 28.2.2012, 12:35


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
Stolzen
Дата 28.2.2012, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Замените vector на ArrayList, а для итерирования по коллекции используйте цикл for-each 


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
barin_Student
Дата 28.2.2012, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Вродебы увидил что Яндекс map api уже данную штуку реализовал, счас изучу и если получиться, то сам отпишу по своему вопросу и закрою тему, если нет... то плохо =)


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
Amp
Дата 29.2.2012, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



Это C++, а не C. Можешь исходники класса Polygon глянуть.

Код

import java.awt.*;

....

Polygon polygon = new Polygon();

polygon.addPoint(0, 0);
polygon.addPoint(0, 1);
polygon.addPoint(1, 0);

System.out.print(polygon.contains(1.1, 0.1));


Это сообщение отредактировал(а) Amp - 29.2.2012, 15:18
PM MAIL   Вверх
barin_Student
Дата 13.3.2012, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Решил задачу, тему закрываю. 
Алгорим нашел:
http://ru.wikipedia.org/w/index.php?title=...;oldid=34062384


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1150 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.