Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Определение расстояния от позиции курсора до кривых
-
Добрый день
Есть задача определить ближайшую кривую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);
Буду признателен за советы
Нарисовал линию от позиции курсора до ближайшей точки, координаты мыши определяются неверно