gluLookAt求解,大侠们帮帮我这个菜鸟 gluLookAt(,,),前面三个参数是摄像机位置,中间三个是目标位置,那么这两个位置就确定一个向量V1了。后面三个参数说是摄像机竖直向上的方向V2。V1和V2理论上应该垂直啊,所以传递参数的时候应该有某种限制的,但是这两个向量被单独决定的,也就是说在传递参数的时候可以不垂直。求解!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void gluLookAt (GLdouble eyeX , GLdouble eyeY , GLdouble eyeZ , GLdouble centerX , GLdouble centerY , GLdouble centerZ , GLdouble upX , GLdouble upY , GLdouble upZ );前3个:相机位置(三维点)中3个:模型位置(三维点)后3个:相机正方向(三维矢量)你把三维点和矢量搞混了:点说的是三维空间的位置,只是确定个位置,没有大小,没有方向.矢量是既有大小又有方向的量,最后3个数确定一个矢量,矢量的方向就是相机的正方向."那么这两个位置就确定一个向量V1了。后面三个参数说是摄像机竖直向上的方向V2。V1和V2理论上应该垂直啊"V1和V2不必垂直,为什么必须垂直呢?如果觉得这个函数不好理解,那就转化为旋转平移变换:F = [centerX-eyeX;centerY-eyeY;centerZ-eyeZ] // 分号跟matlab中的意义一样,表示一行数据结束f = F/||F||; // 归一化up' = UP/||UP||;s = f×up', u = s×f; // ×表示叉乘旋转矩阵M = s[0] s[1] s[2] 0u[0] u[1] u[2] 0-f[0] -f[1] -f[2] 00 0 0 1gluLookAt(..)等价于glMultMatrix(M)glTranslated(-eyeX,-eyeY,-eyeZ) VS中运行程序与独立运行程序有什么不一样吗? 请教!有什么SDK可以获得CPU的型号? 关于树的临时存储 firebird问题 一个初学者的简单送分题,大家进来看看... ActiveX中大数据块传输问题! 关于控件开发问题,高手请进 不理解HANDLE的用途,请高手指点!(答对一题25分,先答先得) 关于属性页,在线等候 求教:vc中如何实现鼠标拖动直线旋转? 请教在list中如何放入label功能的实现。 vs2010肿么不能用通用版本的strlen?
(GLdouble eyeX
, GLdouble eyeY
, GLdouble eyeZ
, GLdouble centerX
, GLdouble centerY
, GLdouble centerZ
, GLdouble upX
, GLdouble upY
, GLdouble upZ
);
前3个:相机位置(三维点)
中3个:模型位置(三维点)
后3个:相机正方向(三维矢量)你把三维点和矢量搞混了:
点说的是三维空间的位置,只是确定个位置,没有大小,没有方向.
矢量是既有大小又有方向的量,最后3个数确定一个矢量,矢量的方向就是相机的正方向.
"那么这两个位置就确定一个向量V1了。后面三个参数说是摄像机竖直向上的方向V2。V1和V2理论上应该垂直啊"
V1和V2不必垂直,为什么必须垂直呢?如果觉得这个函数不好理解,那就转化为旋转平移变换:F = [centerX-eyeX;centerY-eyeY;centerZ-eyeZ] // 分号跟matlab中的意义一样,表示一行数据结束
f = F/||F||; // 归一化
up' = UP/||UP||;
s = f×up', u = s×f; // ×表示叉乘
旋转矩阵M =
s[0] s[1] s[2] 0
u[0] u[1] u[2] 0
-f[0] -f[1] -f[2] 0
0 0 0 1gluLookAt(..)等价于
glMultMatrix(M)
glTranslated(-eyeX,-eyeY,-eyeZ)