我在 qglviewer 上画了一些线现在我需要计算从鼠标位置到曲线的最短路径
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);
有什么建议吗?
鼠标位置画面
是的,现在我从光标画线到最近的点。坐标错误