内容简介:问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数。我们可以认为v1绕着向量u旋转θ四元数q可以表示为
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数。
我们可以认为v1绕着向量u旋转θ 角度到v2,u垂直于v1-v2平面。
四元数q可以表示为 cos(
所以我们求出u和θ/2即可, u等于v1与v2的叉积,不要忘了单位化; θ/2用向量夹角公式就能求。
clear all; close all; clc; v1=[1 2 3]; v2=[4 5 6]; %转为单位向量 nv1 = v1/norm(v1); nv2 = v2/norm(v2); if norm(nv1+nv2)==0 q = [0 0 0 0]; else u = cross(nv1,nv2); u = u/norm(u); theta = acos(sum(nv1.*nv2))/2; q = [cos(theta) sin(theta)*u]; end %由四元数构造旋转矩阵 R=[2*q(1).^2-1+2*q(2)^2 2*(q(2)*q(3)+q(1)*q(4)) 2*(q(2)*q(4)-q(1)*q(3)); 2*(q(2)*q(3)-q(1)*q(4)) 2*q(1)^2-1+2*q(3)^2 2*(q(3)*q(4)+q(1)*q(2)); 2*(q(2)*q(4)+q(1)*q(3)) 2*(q(3)*q(4)-q(1)*q(2)) 2*q(1)^2-1+2*q(4)^2]; s = nv1*R; %显示结果 v2 s*norm(v2)
参考:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度学习的 JavaScript 基础:矩阵和向量的表示
- OpenGL/OpenGL ES 入门:基础变换 - 初识向量/矩阵
- 支持向量机(一):支持向量机的分类思想
- 算法工程师的数学基础:线性代数中的向量和向量空间
- 机器学习 | SVD矩阵分解算法,对矩阵做拆分,然后呢?
- 支持向量机:LinearSVM
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Domain-Driven Design
Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!