Определение расстояния от позиции курсора до кривых



  • Добрый день
    Есть задача определить ближайшую кривую

    void viewer::mouseMoveEvent(QMouseEvent *e) 
    {
    qglviewer::Vec xx(e->pos().x(), e->pos().y(), 1);
    qglviewer::Vec xxx = this->camera()->unprojectedCoordinatesOf(xx);
    float dist1track = std::numeric_limits<float>::max();
    for(int i = 0; i < wtrjF.size(); i++)
    {
           Atom atom = wtrjF[i];
           for(float t = 0; t < atom.pos.size(); t++)
           {
               if(dist1track > qSqrt(qPow(atom.pos[t][0] - xxx[0], 2) + qPow(atom.pos[t][1] - xxx[1], 2)))
               {
                   dist1track = qSqrt(qPow(atom.pos[t][0] - xxx[0], 2) + qPow(atom.pos[t][1] - xxx[1], 2));
                   name = atom.wname;
                   wid = atom.wid;
                   pos = QString::number(atom.pos[0][0]) + "_" + QString::number(atom.pos[0][1]);
               }
           }
    }
    qDebug()<<name<<dist1track;
    }
    

    Но кривая определяется неверно
    Возможно, неверно конвертируются координаты мыши
    Пробовал множество всевозможных вариантов, приведенный выше работает точнее, но все равно криво
    Также пробовал:

    qglviewer::Vec xx = camera()->pointUnderPixel(e->pos(), found);
    qglviewer::Vec xx(e->pos().x(), e->pos().y(), 0);
    glReadPixels(e->pos().x(), view[3] - e->pos().y(), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z1);
    qglviewer::Vec xx(e->pos().x(), e->pos().y(), z1);
    

    Буду признателен за советы

    0_1545749346927_2.png
    Нарисовал линию от позиции курсора до ближайшей точки, координаты мыши определяются неверно


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.