游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2883|回复: 6

问一个旋转的问题

[复制链接]

2

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-9-6 11:05:00 | 显示全部楼层 |阅读模式
空间向量 (Ax,Ay,Az)
经过 x轴  a角度,y轴 b角度,z轴 c角度的旋转后  向量为(Bx,By,Bz)

现在的问题是  如果知道了 之前的(Ax,Ay,Az)和旋转后的(Bx,By,Bz)

怎样反求  a b c 三个角度?  是否是唯一的?  谢谢 [em1]

13

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2007-9-6 13:16:00 | 显示全部楼层

Re: 问一个旋转的问题


正弦函数 sin(A)=a/h
余弦函数 cos(A)=b/h
正切函数 tan(A)=a/b
余切函数 cot(A)=b/a
正割函数 sec (A) =h/b
余割函数 csc (A) =h/a

13

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2007-9-6 13:22:00 | 显示全部楼层

Re:问一个旋转的问题

Ax = 半径*sin(a)//a为原始角度
Bx = 半径*sin(a')//a'为旋转后的角度
你要求的△a = abs(a-a')//△a为旋转的角度

2

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2007-9-6 16:06:00 | 显示全部楼层

Re: 问一个旋转的问题

先 谢谢回复。
不过kkun兄的方法求出的角度  不是绕轴旋转的夹角吧..

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-6 23:35:00 | 显示全部楼层

Re:问一个旋转的问题

kkun的方法可行。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-9-11 12:05:00 | 显示全部楼层

Re:问一个旋转的问题

好象不是唯一的。
我主张“求不出来”

比如:绕X轴转180度,绕Y轴转180度,绕Z轴绕180度。怎么求各转了多少度?(好象和原来的重叠了)

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-11 14:10:00 | 显示全部楼层

Re: Re:问一个旋转的问题

snhun: Re:问一个旋转的问题

好象不是唯一的。
我主张“求不出来”

比如:绕X轴转180度,绕Y轴转180度,绕Z轴绕180度。怎么求各转了多少度?(好象和原来的重叠了)


啊,仔细想想,因为asin的区间是[-PI/2,PI/2],当旋转大于90度,确实不是唯一的。
不过加上点积就可以判断90-180的情况。
另外lz的需求可能是沿着最短球面半径,所以180以上的角度可以不用考虑(这样的话可以考虑用四元数)。
或者只绕一个方向旋转,这样利用叉积就能确定大于180度的情况。
所以只要再给点限制条件,就能求得唯一的角度。

不过重叠的那个情况,求倒是能求,光从结果考虑,各转了0度嘛,但确实过程上没法确定唯一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-21 22:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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