OpenGL 获取当前屏幕坐标对应的三维坐标
转自原文 OpenGL 获取当前屏幕坐标对应的三维坐标,使用很简单glu库中的一个函数
#include <GL/glut.h> #include <stdlib.h> #include <stdio.h>void display(void) {glClear(GL_COLOR_BUFFER_BIT);glFlush(); }/* Change these values for a different transformation */ void reshape(int w, int h) {glViewport (0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity(); }void mouse(int button, int state, int x, int y) {GLint viewport[4];GLdouble mvmatrix[16], projmatrix[16];GLint realy; /* OpenGL y coordinate position */GLdouble wx, wy, wz; /* returned world x, y, z coords */switch (button) {case GLUT_LEFT_BUTTON:if (state == GLUT_DOWN) {glGetIntegerv (GL_VIEWPORT, viewport);glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);/* note viewport[3] is height of window in pixels */realy = viewport[3] - (GLint) y - 1;printf ("Coordinates at cursor are (%4d, %4d)\n", x, realy);gluUnProject ((GLdouble) x, (GLdouble) realy, 0.0,mvmatrix, projmatrix, viewport, &wx, &wy, &wz);printf ("World coords at z=0.0 are (%f, %f, %f)\n",wx, wy, wz);gluUnProject ((GLdouble) x, (GLdouble) realy, 1.0,mvmatrix, projmatrix, viewport, &wx, &wy, &wz);printf ("World coords at z=1.0 are (%f, %f, %f)\n",wx, wy, wz);}break;case GLUT_RIGHT_BUTTON:if (state == GLUT_DOWN)exit(0);break;default:break;} }void keyboard(unsigned char key, int x, int y) {switch (key) {case 27:exit(0);break;} }/** Open window, register input callback functions*/int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (500, 500);glutInitWindowPosition (100, 100);glutCreateWindow (argv[0]);glutDisplayFunc(display);glutReshapeFunc(reshape);glutKeyboardFunc (keyboard);glutMouseFunc(mouse);glutMainLoop();return 0; }
//相关API含义
gluPerspective //指定观察视景体
gluUnProject //传入模型矩阵和视点矩阵,根据当期屏幕坐标,返回对应的三维坐标。
OpenGL 获取当前屏幕坐标对应的三维坐标相关推荐
- UG模型边界上的点集生成及获取其三维坐标
文章目录 前言 一.三维模型添加点集 二.存为.IGS文件 三.程序读取每个点的三维坐标 附录 前言 UG上自己画的三维模型(.prt)在边界上添加点集,得到边界上密集的点,然后另存为.IGS文件,获 ...
- OpenGL之建立三维坐标网格
OpenGL之建立三维坐标网格 By Cracent 之前的一件作品,在此与大家分享一下: 这件作品里面涉及到了三维坐标网格的建立,本文将进行代码解析. 1.网格建立函数 void CMyStatic ...
- 双目视觉目标追踪及三维坐标获取—python(代码)
2022年九月更新: 在原来的基础上,我使用了yolov5代替了opencv的目标检测算法辅助相机进行三维坐标的获取,并成功用获取的坐标实时控制机械臂,感兴趣的话可以看我b站里的视频,视频下方也有开源 ...
- Realsense获取像素点在相机坐标系下的三维坐标
系统:Windows10 设备:RealSense D435i 提前搭建好Python环境,安装pyrealsense2,numpy,opencv. python-代码 # -*- coding: u ...
- 十、获取人体骨骼关键点三维坐标——Azure Kinect DK入门
Azure Kinect DK 文档 Azure-Kinect-Sensor-SDK 文档 Azure Kinect Body Tracking SDK 文档 OpenCV文档 参考文档学习,边学,边 ...
- Kinect Azure DK获取深度图、深度数据和人体骨骼关键点三维坐标
使用环境:Azure Kinect SDK v1.4.1 + Azure Kinect Body Tracking SDK 1.0.1 + VS2019 + Opencv 文章目录 一.获取深度图 二 ...
- 三维坐标与平面坐标的转换(threejs)
这个是世界坐标转平面坐标 function updateScreenPosition() { if (sprite === undefined) { return false; ...
- OpenGL将二维图形显示为三维点云图
全文参考:http://blog.csdn.net/sky_freebird/article/details/6695059 运用OpenGL实现二维图像的三维点云图显示. #include < ...
- 基于OpenCV的立体相机标定StereoCalibration与目标三维坐标定位
说明:以下涉及到的一些公式以及图片来自于Learning OpenCV. 做了快2个月的立体相机标定,遇到了一些问题,也有了一些体会,在这里记下来. 1.在做立体相机标定的时候,标定板的规范与否直接影 ...
最新文章
- 数据研发岗位需要技能
- 解放你内心的自然领袖,从你的内心而非你的自我来领导你自己
- 基于struts2拦截器实现用户操作日志记录
- 优秀的java代码_像这样写,Java菜鸟也能写出牛逼的代码
- 深入浅出设计模式原则之开闭原则(OCP)
- equals和hashCode
- Activity加载View调用顺序
- 批量删除table或view
- 利用C++语言设计可扩展线程池
- Hash冲突以及如何解决Hash冲突
- 台式计算机用u盘给电脑安装系统,台式机用u盘装系统,教您用u盘装系统给台式机...
- 从LeNet-5 CNN模型入门PyTorch
- 【nvidia Xavier】感受gpu算力
- android 电池(一):锂电池基本原理篇 .
- Webview 打开qq聊天窗口,申请进群
- Linux 磁盘管理-配额管理-配置用户对磁盘进行指定大小或者文件数量的使用权限
- 全面屏的 iPhone X,雷军妥协的库克做到了
- 应用程序无法正常启动(0xc000007b)
- 计算机如何共享电视,win7系统电视共享视频的操作方法
- 对国家最新战略“新基建”的解读,一起把握赚钱的机会