游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10404|回复: 20

求助:四元?档募负我饬x?

[复制链接]

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2007-1-27 22:48:00 | 显示全部楼层 |阅读模式
moriya 求助:四元?档募负我饬x?

各位大大,
      最近我想用四元?底???活相机,但是始?弄不明白四元?档降资鞘裁醇负我饬x,看《math in graphics》里面介?的?热荩?行┯⒄Z太“地道”??在是不才水平有限,?能?我?一下四元?敌?D、平滑查值的原理,或介?一本??些的中文?本?
     和?稻萁Y构也沾些?,?肝大大手下留情。



saycheese Re:求助:四元?档募负我饬x?

四元组我看了很久``下面的链接是部分摘要`希望有帮助http://wiki.donews.com/index.php/Saycheese1984%E5%9B%9B%E5%85%83%E7%BB%84

moriya Re:求助:四元?档募负我饬x?

???巧希?上Ф际歉拍睿??隙加校?O~


duzhi5368 Re: 求助:四元?档募负我饬x?

就是设置一个空间旋转轴吧


千里马肝 Re:求助:四元?档募负我饬x?

网上有一些opensource用四元数做的camera可以找来看看
四元数有它的好处
但是当需要传入到gpu时又要转回matrix就变得有点正负相抵了

免费打工仔  Re:求助:四元?档募负我饬x?

绕一个轴旋转一个角度,x y z w

moriya Re:求助:四元?档募负我饬x?

(cos(0.5theta) sin(0.5theta)n) V (cos(0.5theta) -sin(0.5theta)n)
??有?D里面技巧是怎?拥模课??@???算??是理解不清,比如?matrix旋?可以用极坐??砝斫猓???uaternion其?算真的就?H?H是???W上的?幔?]有透?乩斫馕倚睦锟???]底,各位大大能不能把自己的??理解不吝告知小弟。

xgreenclover Re:求助:四元?档募负我饬x?

就是虚数乘法的几何意义,都让我感到相当惊讶了,何况这个四元数有三个虚部呢。



以上?原?自C++板?K,但是???我苦思而不得,所以?到???更多大大指?б幌?我未?回?者允??⑵浠馗促N到此版,?┱?大大??海涵.
原?接:http://bbs.gameres.com/showthread.asp?threadid=72005

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-1-27 22:50:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

不明白

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-1-27 23:23:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

在3D程序中,通常用quaternion来计算3D物体的旋转角度,与Matrix相比,quaternion更加高效,占用的储存空间更小,此外也更便于插值。在数学上,quaternion表示复数w+xi+yj+zk,其中i,j,k都是虚数单位:

i*i = j*j = k*k= -1
i*j = k, j*i = -k

可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w, V]或[ w,(x,y,x)]。对quaternion最大的误解在于认为w表示旋转角度,V表示旋转轴。正确的理解应该是w与旋转角度有关,v与旋转轴有关。例如,要表示以向量N为轴,轴旋α度,相对的quaternion应该是:
q = [ cos(α/ 2) , sin(α/ 2) N]
  =[ cos(α/ 2) , ( sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz ) ]

为了计算方便,一般要求N为单位矢量。对quaternion来说使用四个值就能记录旋转,而不是Matrix所需的十六个值。为什么用quaternion来计算旋转很方便呢?先说过quaternion是一个复数,如果你还记得一点点复数的知识,那么应该知道复数乘法(叉乘)的几何意义实际上就是对复数进行旋转。对最简单的复数p= x + yi来说,和另一个复数q = ( conα,sinα)相乘,则表示把p沿逆时针方向旋转α:
p’ = pq
当然,x+yi的形式只能表示2D变换,对3D变换来说就需要使用 quaternion了,而且计算也要复杂一点。为了对3D空间中的一个点p(x,y,z)进行旋转,需要先把它转换为quaternion形式p = [0, ( x, y, z)],接下来前面讨论的内容,定义q = cos(α/ 2) , sin(α/ 2) N为旋转quaternion,这里N为单位矢量长度的旋转轴,α为旋转角度。那么旋转之后的点p’则为:
       p’ = qpq-1


12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-1-27 23:45:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

clayman: Re:求助:四元?档募负我饬x?
定义q = cos(α/ 2) , sin(α/ 2) N为旋转quaternion,这里N为单位矢量长度的旋转轴,α为旋转角度。那么旋转之后的点p’则为:
       p’ = qpq-1

??是?里的?程

算?X上 q q-1的?不就是一??那么旋?中起作用的分量到底是什么呢?

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-1-28 00:46:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

3D游戏大师编程技巧 4.10节 有讲

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-1-28 03:31:00 | 显示全部楼层

Re: Re:求助:四元?档募负我饬x?

mousesure: Re:求助:四元?档募负我饬x?

3D游戏大师编程技巧 4.10节 有讲

???沂诌?就有,??镏v的?热萆厦娑家呀?提到了,你是否?得清楚??是?e的??辖榻B的?岔了????巧先绻?形墨I提供一下?接?我,感?之至。

6

主题

396

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
发表于 2007-1-28 08:16:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

Mathematics for 3D Game Programming and Computer Graphics, Second Edition, Charles River Media, 2004
中文的叫《3D游戏与计算机图形学中的数学方法》
这个里面有比较详细的介绍,应该能够满足你的需求吧

还有一本找不到了……

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-1-28 14:56:00 | 显示全部楼层

Re:求助:四元?档募负我饬x?

楼上所说那本书我看过,其中有不少错误,至少有5处,其中有一个重要错误,把数学公式写错了,我估计有可能是作者的疏忽,也有可能是编辑印刷时的疏忽.阅读时要小心一些,对有怀疑的地方要查阅其它相关资料以便验证.

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2007-1-28 18:04:00 | 显示全部楼层

Re: Re:求助:四元?档募负我饬x?

moriya: Re:求助:四元?档募负我饬x?


??是?里的?程

算?X上 q q-1的?不就是一??那么旋?中起作用的分量到底是什么呢?

我记得四元数相乘的过程Realtime Rendering里面有讲……细节不清楚了,不过好像和叉乘点乘都有关

42

主题

140

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
发表于 2007-1-28 18:59:00 | 显示全部楼层

Re: 求助:四元?档募负我饬x?

不要定住几个专业名词,牛角尖,没有意义。
四元?岛椭峤切问揭谎?硎疚锾逍??P??峥梢苑此慊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 01:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表