获取平面y=0上的点击位置
Getting Click Position on Plane y=0
我试图获得用户在平面y=0上点击的坐标
我这样做是通过取消投影鼠标坐标来获得近平面和远平面上的世界坐标,然后使用线性插值来找到平面上的坐标,但它没有给我正确的坐标。
我的投影代码:
int viewport[4];
double modelview[16];
double projection[16];
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
double x, y, z;
//x_ and y_ are the x and y coordinates of the mouse
gluUnProject(x_, viewport[3] - y_, 0.0, modelview, projection, viewport, &x, &y, &z);
near.x = x;
near.y = y;
near.z = z;
gluUnProject(x_, viewport[3] - y_, 100.0, modelview, projection, viewport, &x, &y, &z);
far.x = x;
far.y = y;
far.z = z;
float t = -near.y / (far.y - near.y);
target_.y = 0.0f;
target_.x = near.x - t * (far.x - near.x);
target_.z = near.z - t * (far.z - near.z);
std::cout << target_ << std::endl;
,但这总是输出:x:一个介于+-1之间的值,似乎与点击位置呈正相关,即使我没有规范化任何地方y: 0z: 2
我看不懂
编辑
对不起,错误是我在转换之前做了取消投影,你不能从上面的代码中看出。我现在已经解决了。
对不起,错误是我在转换之前做了取消投影,你不能从上面的代码中看出
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 在立方体上的距离并计算出正常和位置的平面
- 在给定平面上创建 XYZ 位置的数据集
- 获取平面y=0上的点击位置
- 重定位表项在平面二进制文件中的存储位置