博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
opengl 直线拾取
阅读量:5816 次
发布时间:2019-06-18

本文共 1490 字,大约阅读时间需要 4 分钟。

http://files.cnblogs.com/dragon2012/Opengl%E6%8B%BE%E5%8F%96.rar

 

贴上关键拾取函数代码

void WALL::pick(GLfloat xpos,GLfloat ypos){xpos,ypos;GLint viewport[4];GLdouble mvmatrix[16],projmatrix[16];float realy;GLdouble wx,wy,wz;glGetIntegerv(GL_VIEWPORT,viewport);glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);glGetDoublev(GL_PROJECTION_MATRIX,projmatrix);realy =ypos;printf("%f %f \n",xpos,realy);gluUnProject((GLdouble)xpos,(GLdouble)realy,0.0,mvmatrix,projmatrix,viewport,&wx,&wy,&wz);float g_nearxyz[3];    g_nearxyz[0] = (GLfloat)wx;g_nearxyz[1] = (GLfloat)wy;g_nearxyz[2] = (GLfloat)wz;gluUnProject((GLdouble)xpos,(GLdouble)realy,1.0,mvmatrix,projmatrix,viewport,&wx,&wy,&wz);float g_farxyz[3];    g_farxyz[0] = (GLfloat)wx;g_farxyz[1] = (GLfloat)wy;g_farxyz[2] = (GLfloat)wz;float m_fangxiang[3];for(int i=0 ;i<3 ;i++){	m_fangxiang[i] =g_farxyz[i] -g_nearxyz[i];}float noml =1/sqrtf(m_fangxiang[0]*m_fangxiang[0]+m_fangxiang[1]*m_fangxiang[1]+m_fangxiang[2]*m_fangxiang[2]);for(int i=0 ;i<3 ;i++){	m_fangxiang[i]*=noml;}	float distens =-g_nearxyz[1]/m_fangxiang[1];float onefangxiang[3];for(int i=0; i<3 ;i++){	onefangxiang[i] =distens*m_fangxiang[i]+g_nearxyz[i];}for(int i=0 ;i<400 ;i++){	pic[i].select =false;	if(abs(onefangxiang[0]-pic[i].x)<4&&abs(onefangxiang[2]-pic[i].y)<4)	{		pic[i].select =true;	}}//printf("%f  %f %f \n",onefangxiang[0],onefangxiang[1],onefangxiang[2]);//printf("line:%f,%f ,%f --->%f ,%f,%f\n",g_nearxyz[0],g_nearxyz[1],g_nearxyz[2],g_farxyz[0],g_farxyz[1],g_farxyz[2]);}

 

 

转载地址:http://jkmbx.baihongyu.com/

你可能感兴趣的文章
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>