文章中讲要用angularVelocity : Vector3改变这个方向。
但是在四元数中,没有用向量来改变四元数值的理论啊?这二者是进行运算的?
另外,还有如何用Torque : Vector3和inersiaTensor : Matrix3来求angularAcceleration : Vector3
运算关系式是什么呀?谢谢!
18 个解决方案
#1
三个轴的旋转角度也可以存为一个Vector3
#2
但是一般文章中都只推荐用Quaternion,而不用YawPitchRoll或是AxisAngle
另外的话,因为在RigidBody中,改变方向的是角速度anglurVelocity : Vector3
是一个向量,如果用YawPitchRoll的话二者之间的运算可能就很麻烦了吧。。。
另外的话,因为在RigidBody中,改变方向的是角速度anglurVelocity : Vector3
是一个向量,如果用YawPitchRoll的话二者之间的运算可能就很麻烦了吧。。。
#3
我觉得应该是一个vec4向量。XYZ存有旋转轴,W存有旋转角度
#4
楼主把你现在在看的书名发出来吧
#5
就是那个GAME PHYSICS ENGINE DEVELOPMENT,而且是带源代码的。
另外Quaternion在数据结构上讲就是Vector4吧。
但是按武林外传中的说法:菜刀是不值那么多钱的,关键是入了菜刀门之后的待遇。。。
也就是说Quaternion的数据结构是很简单的,关键是建立在其上的数学理论和运算比较难懂。
另外Quaternion在数据结构上讲就是Vector4吧。
但是按武林外传中的说法:菜刀是不值那么多钱的,关键是入了菜刀门之后的待遇。。。
也就是说Quaternion的数据结构是很简单的,关键是建立在其上的数学理论和运算比较难懂。
#6
数学!线代!
#7
是的啊,但是书上貌似没有Quaternion与Vector3运算的相关方法吧。。。
#8
四元数的定义是 x*i + y*j + z*k + w, 就是一个3维的虚数。 i,j,k互相垂直。在表示旋转的时候,加入旋转轴u = (ux,uy,uz), 旋转角度 a, 那么四元数为
q = ( sin(a/2)*u, a) = ( sin(a/2)*ux, sin(a/2)*uy, sin(a/2)*uz, cos(a/2))
四元数的乘法表示两个旋转先后发生。 乘法就是 (x*i + y*j + z*k + w)*(x*i + y*j + z*k + w)根据普通分配率展开合并后的结果,直接用directx的四元数乘法也可以
真对你说的solver中的角速度与四元数的转换时这样的:
假如角速度为w, 那么dt时间角度为 L =w*dt,
那么根据这个L构造一个四元数, 四元数的角度旋转角为L向量的长度,就是a=|L|,
四元数的旋转轴为 u = L/|L|, 就是L的单位向量
构造的四元数为 q = ( u*sin(a/2), cos(a/2), 跟前面一样
最后把这个叠加到原来的旋转上 q0 = q*q0; 其中q0是原来物体的旋转四元数。
q = ( sin(a/2)*u, a) = ( sin(a/2)*ux, sin(a/2)*uy, sin(a/2)*uz, cos(a/2))
四元数的乘法表示两个旋转先后发生。 乘法就是 (x*i + y*j + z*k + w)*(x*i + y*j + z*k + w)根据普通分配率展开合并后的结果,直接用directx的四元数乘法也可以
真对你说的solver中的角速度与四元数的转换时这样的:
假如角速度为w, 那么dt时间角度为 L =w*dt,
那么根据这个L构造一个四元数, 四元数的角度旋转角为L向量的长度,就是a=|L|,
四元数的旋转轴为 u = L/|L|, 就是L的单位向量
构造的四元数为 q = ( u*sin(a/2), cos(a/2), 跟前面一样
最后把这个叠加到原来的旋转上 q0 = q*q0; 其中q0是原来物体的旋转四元数。
#9
谢谢前辈啊,有些看明白啦。
只是那个L = w * dt还是有些糊涂,怎么就可以从那个L求出轴与角哩。
那个L = w * dt在几何上是如何理解的哩。
#10
看样子您是自己实现过物理引擎的哩?您是自己既写图形又做物理的高人前辈吗。
#11
行者从2001年就在CSDN混啊?
#12
既写图形又作物理的参考这两个人
http://www.cnblogs.com/jiangwei
http://www.cnblogs.com/fishboy82
L = w*dt很容易理解, w是角速度, 路程等于速度*时间,那么dt时间后转过的角度就是w*dt
http://www.cnblogs.com/jiangwei
http://www.cnblogs.com/fishboy82
L = w*dt很容易理解, w是角速度, 路程等于速度*时间,那么dt时间后转过的角度就是w*dt
#13
那个从L这得到轴是因为三维空间中角速度向量就是那么定义的, 方向为轴的方向,向量的长度为旋转的角度。
前几年潜水,现在才敢回答问题哈。
#14
那就太谢谢前辈啦,只是有最后一个小问题哈。
就是u = L / |L| 为什么是旋转轴呀,怎么也想不通。
#15
参考百度百科关于三维角速度
http://baike.baidu.com/view/84858.htm
参考wiki关于三维角速度
http://en.wikipedia.org/wiki/Angular_velocity
The magnitude is the angular speed, and the direction describes the axis of rotation.
http://baike.baidu.com/view/84858.htm
参考wiki关于三维角速度
http://en.wikipedia.org/wiki/Angular_velocity
The magnitude is the angular speed, and the direction describes the axis of rotation.
#16
因为就是这么定义的... 这种定义挺方便,既有方向,又有旋转角度。至于为什么这么定义以及推导,得找当初发明时的论文了
#17
你潜水时我小学还没读到一半…55555
#18
旋转的角度是弧度,当角速度为1度美秒的时候,角速度 w 就是旋转轴, w = u.
这样如果角速度是3度每秒, 那么 w = 3u, 可以看出 w/|w| = u, |w|=3
这样如果角速度是3度每秒, 那么 w = 3u, 可以看出 w/|w| = u, |w|=3
#1
三个轴的旋转角度也可以存为一个Vector3
#2
但是一般文章中都只推荐用Quaternion,而不用YawPitchRoll或是AxisAngle
另外的话,因为在RigidBody中,改变方向的是角速度anglurVelocity : Vector3
是一个向量,如果用YawPitchRoll的话二者之间的运算可能就很麻烦了吧。。。
另外的话,因为在RigidBody中,改变方向的是角速度anglurVelocity : Vector3
是一个向量,如果用YawPitchRoll的话二者之间的运算可能就很麻烦了吧。。。
#3
我觉得应该是一个vec4向量。XYZ存有旋转轴,W存有旋转角度
#4
楼主把你现在在看的书名发出来吧
#5
就是那个GAME PHYSICS ENGINE DEVELOPMENT,而且是带源代码的。
另外Quaternion在数据结构上讲就是Vector4吧。
但是按武林外传中的说法:菜刀是不值那么多钱的,关键是入了菜刀门之后的待遇。。。
也就是说Quaternion的数据结构是很简单的,关键是建立在其上的数学理论和运算比较难懂。
另外Quaternion在数据结构上讲就是Vector4吧。
但是按武林外传中的说法:菜刀是不值那么多钱的,关键是入了菜刀门之后的待遇。。。
也就是说Quaternion的数据结构是很简单的,关键是建立在其上的数学理论和运算比较难懂。
#6
数学!线代!
#7
是的啊,但是书上貌似没有Quaternion与Vector3运算的相关方法吧。。。
#8
四元数的定义是 x*i + y*j + z*k + w, 就是一个3维的虚数。 i,j,k互相垂直。在表示旋转的时候,加入旋转轴u = (ux,uy,uz), 旋转角度 a, 那么四元数为
q = ( sin(a/2)*u, a) = ( sin(a/2)*ux, sin(a/2)*uy, sin(a/2)*uz, cos(a/2))
四元数的乘法表示两个旋转先后发生。 乘法就是 (x*i + y*j + z*k + w)*(x*i + y*j + z*k + w)根据普通分配率展开合并后的结果,直接用directx的四元数乘法也可以
真对你说的solver中的角速度与四元数的转换时这样的:
假如角速度为w, 那么dt时间角度为 L =w*dt,
那么根据这个L构造一个四元数, 四元数的角度旋转角为L向量的长度,就是a=|L|,
四元数的旋转轴为 u = L/|L|, 就是L的单位向量
构造的四元数为 q = ( u*sin(a/2), cos(a/2), 跟前面一样
最后把这个叠加到原来的旋转上 q0 = q*q0; 其中q0是原来物体的旋转四元数。
q = ( sin(a/2)*u, a) = ( sin(a/2)*ux, sin(a/2)*uy, sin(a/2)*uz, cos(a/2))
四元数的乘法表示两个旋转先后发生。 乘法就是 (x*i + y*j + z*k + w)*(x*i + y*j + z*k + w)根据普通分配率展开合并后的结果,直接用directx的四元数乘法也可以
真对你说的solver中的角速度与四元数的转换时这样的:
假如角速度为w, 那么dt时间角度为 L =w*dt,
那么根据这个L构造一个四元数, 四元数的角度旋转角为L向量的长度,就是a=|L|,
四元数的旋转轴为 u = L/|L|, 就是L的单位向量
构造的四元数为 q = ( u*sin(a/2), cos(a/2), 跟前面一样
最后把这个叠加到原来的旋转上 q0 = q*q0; 其中q0是原来物体的旋转四元数。
#9
谢谢前辈啊,有些看明白啦。
只是那个L = w * dt还是有些糊涂,怎么就可以从那个L求出轴与角哩。
那个L = w * dt在几何上是如何理解的哩。
#10
看样子您是自己实现过物理引擎的哩?您是自己既写图形又做物理的高人前辈吗。
#11
行者从2001年就在CSDN混啊?
#12
既写图形又作物理的参考这两个人
http://www.cnblogs.com/jiangwei
http://www.cnblogs.com/fishboy82
L = w*dt很容易理解, w是角速度, 路程等于速度*时间,那么dt时间后转过的角度就是w*dt
http://www.cnblogs.com/jiangwei
http://www.cnblogs.com/fishboy82
L = w*dt很容易理解, w是角速度, 路程等于速度*时间,那么dt时间后转过的角度就是w*dt
#13
那个从L这得到轴是因为三维空间中角速度向量就是那么定义的, 方向为轴的方向,向量的长度为旋转的角度。
前几年潜水,现在才敢回答问题哈。
#14
那就太谢谢前辈啦,只是有最后一个小问题哈。
就是u = L / |L| 为什么是旋转轴呀,怎么也想不通。
#15
参考百度百科关于三维角速度
http://baike.baidu.com/view/84858.htm
参考wiki关于三维角速度
http://en.wikipedia.org/wiki/Angular_velocity
The magnitude is the angular speed, and the direction describes the axis of rotation.
http://baike.baidu.com/view/84858.htm
参考wiki关于三维角速度
http://en.wikipedia.org/wiki/Angular_velocity
The magnitude is the angular speed, and the direction describes the axis of rotation.
#16
因为就是这么定义的... 这种定义挺方便,既有方向,又有旋转角度。至于为什么这么定义以及推导,得找当初发明时的论文了
#17
你潜水时我小学还没读到一半…55555
#18
旋转的角度是弧度,当角速度为1度美秒的时候,角速度 w 就是旋转轴, w = u.
这样如果角速度是3度每秒, 那么 w = 3u, 可以看出 w/|w| = u, |w|=3
这样如果角速度是3度每秒, 那么 w = 3u, 可以看出 w/|w| = u, |w|=3