crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Помогите, пожалуйста, с алгоритмом попадания в точку, определение значка аэропорта.
AD
  опции профиля:
сообщение 19.12.2008, 12:22
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


На карте есть значок определения аэропорта. При нажатии правой клавиши мыши появляется меню, приведенное на картинке. Так в этом меню есть подменю "Object", которое должно быть видимым если мы попали в значок аэропорта. Это получается только при больших масштабах или же еще в каком-то таком странном случае. Помогите пожалуйста, вот код определения экранного расстояния, при котором я считаю, что необходимо показывать подменю. У кого есть какие идеи?
/// Проверка на то, есть в данной точке объект
bool QTrackWidget::isObject(const QPoint& cur_pos)
{
    for(QVector<APTINFO*>::iterator iter=apt_vec.begin(); iter!=apt_vec.end(); ++iter)
    {
        GPOINT apt_geo_coord((*iter) -> apt_coord); // выбор гео-точки аэропорта
        SPOINT apt_scr_coord(pSahara -> GeoToScr(apt_geo_coord)),  current_pos(cur_pos.x(), cur_pos.y()); // перевод в экранные координаты гео-точки аэропорта и точки мыши на карте
        double dx = apt_scr_coord.x - current_pos.x, dy = apt_scr_coord.y - current_pos.y;
        int dst = floor(sqrt(pow(dx, 2.0) + pow(dy, 2.0)));  // рассчет расстояния по теореме Пифагора
        if(dst <= 10)
        {
            apt = (*iter);
            return true;
        }
    }
    return false;
}


Вот рисунок:
[attachment=341:apt_defining.JPG]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2024, 6:34