两个向量如何对齐

happyzhanglan 2011-10-28 10:49:21
已知三维坐标系中的四个点(坐标已知)构成了两个向量,现在需要将两个向量对齐,我知道需要平移和旋转,平移量可以分别用两个向量中的一个点相减得到,但是旋转呢,旋转角如何计算?望各位指教
...全文
464 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyzhanglan 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wpalhm 的回复:]
C/C++ code


cross = v1 ^ v2 //^叉乘
crossmag = cross.size()
if (crossmag < 0.0001) //两个向量平行
{
}
else
{
angle = asin(crossmag);
dot = v1 | v2; //点乘
if(dot < 0)
{
angle = PI - a……
[/Quote]
这代码好像是求夹角吧,我要的是两个向量对齐其中一个向量需绕x,y,z的旋转角啊,也就是欧拉角,或者这是什么方法,能说详细点么,谢谢啊
gold_water 2011-10-28
  • 打赏
  • 举报
回复
考虑下矩阵运算是否可以。
wpalhm 2011-10-28
  • 打赏
  • 举报
回复

cross = v1 ^ v2 //^叉乘
crossmag = cross.size()
if (crossmag < 0.0001) //两个向量平行
{
}
else
{
angle = asin(crossmag);
dot = v1 | v2; //点乘
if(dot < 0)
{
angle = PI - angle;
}
}


ok!
wpalhm 2011-10-28
  • 打赏
  • 举报
回复
四元数可以很好的解决你的问题。
pengsheng1988 2011-10-28
  • 打赏
  • 举报
回复
帮顶,求大虾,学习学习
wpalhm 2011-10-28
  • 打赏
  • 举报
回复
绕着一个向量旋转一个角度。这是典型的四元数

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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