世界坐标转视点坐标是怎么推出来的

zhyinty 2008-11-24 09:36:54
假设知道了视点坐标的基分别为u,v,n
...全文
156 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacier3d 2008-11-26
  • 打赏
  • 举报
回复
继续:

所以变换矩阵的旋转部分即:

u.x v.x n.x
u.y v.y n.y
u.z v.z n.z

下面是平移部分:

设视点坐标为eye(x,y,z),要讲起移到与世界原点重合,

在新的uvn坐标系下,eye的坐标为(eye*u,eye*v,eye*n)(都为点积)
要移到世界原点,平移量即-eye*u, -eye*v, -eye*n

所以,总的变换矩阵为:

u.x v.x n.x 0
u.y v.y n.y 0
u.z v.z n.z 0
-eye*u -eye*v -eye*n 1

例如,D3D下D3DXMatrixLookAtLH函数的计算过程如下:

zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)

xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1

rookieme 2008-11-26
  • 打赏
  • 举报
回复
世界座标是没有固定原点滴,此题在计算机软件圈内多半会得到错误答案
zzz822163 2008-11-25
  • 打赏
  • 举报
回复
不是很明白你的意思,你想要做什么?
iumlomki 2008-11-25
  • 打赏
  • 举报
回复
mark,今天没时间了,明天来答
zhyinty 2008-11-25
  • 打赏
  • 举报
回复
不是,就是说一个坐标系转到另一个坐标系,并且这个坐标系的原点不是0
glacier3d 2008-11-25
  • 打赏
  • 举报
回复
推倒过程分两部分:旋转和平移

先说旋转,(假设两个坐标系的原点已经重合)
原坐标系下人一点P(x,y,z),旋转变换到新坐标系uvn下,即:
考虑点p在u、v、n三轴上上的投影长度,
所以变换后为(p.x*u.x+p.y*u.y+p.z*u.z, p.x*v.x+.......),

平移部分复杂点,。。。。(没时间了,闪人。。。。。。
rookieme 2008-11-25
  • 打赏
  • 举报
回复
没那么简单,u,v,n 不是球坐标
不过有现成的转换矩阵,看看大地测量的书吧!
yqwphome 2008-11-25
  • 打赏
  • 举报
回复
打错了 上面2中是作90-Thta的顺时针旋转变换
yqwphome 2008-11-25
  • 打赏
  • 举报
回复
假设世界坐标系原点为O,目标坐标系的原点OO在世界坐标系中的位置是(a,b,c),相应的球坐标为
(Rsin(Phi)cos(Thta),Rsin(Phi)sin(Thta),Rcos(Phi))
1.将o移动到oo 变换矩阵T1[4][4]中[1,1]=1,[2,2]=1,[3,3]=1,[4,4]=1,[4,1]=-a,[4,2]=-b,[4,3]=-c;
(其他的全为0,下同)
2.绕Z轴(注意是OO的Z轴)作90-Thi的顺时针旋转变换,相应的变换矩阵T2[4][4]中[1,1]=cos(90-Thta),
[2,2]=cos(90-Thta),[3,3]=1,[4,4]=1,[2,1]=-sin(90-Thta),[1,2]=cos(90-Thta)
3.绕Z轴作180-Phi的逆时针旋转变换,T3:[1,1]=1,[2,2]=cos(180-Phi),[3,3]=cos(180-Phi),[4,4]=1,
[2,3]=-sin(180-Phi),[3,2]=sin(180-Phi)
4.作关于YOZ的反射变换T4:[1,1]=-1,[2,2]=1,[3,3]=1,[4,4]=1
最后把O坐标系下的一点(Xo,Yo,Zo)依次左×T1,T2,T3,T4记得到OO坐标系下的(Xoo,Yoo,Zoo)

图形学书上有,OO就相当于视点。把(Xo,Yo,Zo)奇次化成(Xo,Yo,Zo,1),然后依次左×T1,T2,T3,T4
zzz822163 2008-11-25
  • 打赏
  • 举报
回复
转窗口坐标吧?
用gluUnProject
paerxiushi 2008-11-25
  • 打赏
  • 举报
回复
世界坐标系与视点坐标系的z轴是相反的,但x,y轴是相同的。前一个z轴指向观众,后一个z轴指向电脑。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧