资源简介
在游戏开发中,通常需要对空间的一个方位变换,通常需要转换为更利于计算的坐标变换矩阵,其中的matlab代码提供了这一算法,通过测试.
代码片段和文件信息
function rotvec = CTMat2RotVec(CTMat);
%
% Converts coordinate transformation matrix to rotation vector
%
% M. S. Grewal L. R. Weill and A. P. Andrews
% Global Positioning Systems Inertial Navigation and Integration
% 2nd Edition Wiley 2006
%
% 1. Compute antisymmetric part of CTMat to get sine of theta
%
A = (1/2)*(CTMat - CTMat‘);
sine_theta = sqrt(A(32)^2+A(13)^2+A(21)^2);
%
% 2. Solve for theta using Eq. C.125
%
theta = atan2(sine_theta(CTMat(11)+CTMat(22)+CTMat(33)-1)/2);
%
% 3. Use truncated Taylor series approximation
% near theta = 0 for theta/sin(theta)
% and symmetric part of CTMat near theta = pi
% in alternative formula to avoid computing theta/sin(theta)
%
if sine_theta < .001
if theta < .01
thetaoversintheta = 1+1/6*theta^2+7/360*theta^4;
rotvec = thetaoversintheta*[CTMat(32);CTMat(13);CTMat(21)];
else
%
% Compute symmetric part of CTMat
%
S = (1/2)*(CTMat+CTMat‘);
%
% Use Eq. C.133ff for solution
%
% This can still give different sign on rhovec if theta = pi
% but rhovec and -rhovec represent the same rotation under
% those conditions. This is a problem with rotation vector
% representation not with this function.
相关资源
- 粒子群 模拟退火 蚁群算法MATLAB实现
- matlab实现BP神经网络
- PCA算法MATLAB实现,附原始数据
- LEACH多跳传输协议matlab实现
- Matlab实现K-Means算法
- GTWR模型matlab实现
- spea2的matlab实现。
- 混沌复洛伦兹系统反同步MATLAB实现
- 用matlab实现基于DCT域的鲁棒水印
- 单脉冲和差测角方法的MATLAB实现
- DLT算法的MATLAB实现
- MATLAB程序分享实现单摆在外力矩作用
- matlab实现视频中动态目标跟踪程序及
- 求助BP神经网络温度预测问题-MATLAB实
- CMI编码matlab实现
- A星算法的路径规划MATLAB实现
- BP神经网络MATLAB实现278858
- AR模型功率谱估计以及MATLAB实现
- 基于SIFT的超分辨率图像配准及MATLAB实
- Logistic函数的MATLAB实现
- 单演信号的matlab实现
- Tsai两步法摄像机标定的Matlab实现
- 商人过河问题的MATLAB实现
- 人工神经网络的matlab实现
- hmm算法matlab实现
- 随机信号及其自相关函数和功率谱密
- 蚁群算法算法的路径规划MATLAB实现
- MATLAB实现的M进制正交幅度调制(MQA
- matlab实现中值滤波去除脉冲噪声
- Matlab实现Hu不变矩特征
评论
共有 条评论