矩阵的旋转平移正变换及反变换
发表于|更新于|算法
假设一个点P(x,y,z),旋转矩阵T,平移向量V,则旋转后的平移表达式为T*P+V,此处采用右乘准则,用矩阵表示为:
[T V;0 1]*[T0 V0;0 1]=[T*T0 T*V0+V;0 1]
其中T0为P原始坐标系的旋转矩阵,V0是P原始坐标系的评议向量,则相应的逆变换为
[inv(T) - inv(T)*V ; 0 1]*[T0 V0;0 1]=[inv(T)*T0 inv(T)*V0-inv(T)*V;0 1]
从上式可以看出,正变换在先旋转后平移的情况下,其逆变换是先平移后旋转
相关推荐

5月 14 2026
直线拟合之最小二乘法AX+BY+C=0
最小二乘法拟合直线,对于大多数人都不是很陌生,直线方程 y=kx+b,令sum((y-kx-b)^2),分别对k和b求导便可求出最佳的参数,但是如果遇到诸如“X=5”这样的直线方程,又该如何呢?这时候就不再适用了,参考这个方法,这样拟合出来的才是直线的一般方程。 Let the line sought be Ax + By + C = 0, with no restriction on A, B,and C, except not both of A and B are zero. Then the distance from apoint (x[n],y[n]) to this line is given by d[n] = |A*x[n]+B*y[n]+C|/sqrt(A^2+B^2). Then the sum of the squares of the distances of the r points from theline is F(A,B,C) = SUM d[n]^2 = SUM (A*x[n]+B*y[n]+C)^2/(A^2+B^2). H...

5月 15 2014
任意点到斜椭圆最小距离
最近由于项目需求,要计算任意点到斜椭圆的距离,方程相信大家都知道怎么建立,但是它是一个4次方程,matlab都很不好解,写到程序中也很难,搜了很多帖子,都是只给方程,不给解的,其实原理大家都知道,如何用程序解才是大家关心的,所以一直都没有找到合理的答案,关键时刻还是google给力,度娘一般的东西还撮合,可学术性的、英文的确是一塌糊涂,网络上收集到这样一篇论文,我也是用这个算法最终解决我的问题的,它只使用与标准方程,斜椭圆只是多了平移和旋转操作而已。 ###第一象限中的点到标准椭圆的距离### double DistancePointEllipseSpecial(const double e[2], const double y[2], double x[2]) { double distance; if (y[1] > 0) { if (y[0] > 0) { // bisect to compute the root of F(t) for t >=...

4月 25 2014
关于直线镜像矩阵生成
最近项目需求,在做关于直线镜像变换,网上看了一些,留作备份,以备追溯, 关于任意直线的对称变换 矩阵运算-矩阵投影,镜像,切变 以上两个是参考的两个帖子,由于我要用到关于任意直线Ax+By+C=0的镜像,采用了第一个说道的方法,并将其代码转换为矩阵表示,更加直观 对于直线ax+by+c=0有 M1=[b*b -a*b -a*c;-a*b a*a -b*c;0 0 0]/(a*a+b*b); M2=[-1 0 0;0 -1 0; 0 0 1]; M=M2*(E-M1)+M1; 其中M就是最后所求关于直线对称的镜像矩阵了

5月 4 2014
灰度共生矩阵(GLCM)
共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。 一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。 设f(x,y)为一幅二维数字图象,其大小为M×N,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为 P(i,j)=#{(x1,y1),(x2,y2)∈M×N|f(x1,y1)=i,f(x2,y2)=j} 其中#(x)表示集合x中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d,两者与坐标横轴的夹角为θ,则可以得到各种间距及角度的灰度共生矩阵P(i,j,d,θ)。 纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的[7],因为图像中相距(Δx,Δy)的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。若将图像的灰度级定为N级,那么共生矩阵为N×N矩阵,可表示为M(Δx,Δy)(h,k),其中位于(h,k)的元素m...

8月 15 2014
根据旋转前后向量求旋转矩阵
如果已知旋转前后向量的变化,如何求旋转矩阵呢?1、旋转角度:已经旋转前向量P及旋转后向量Q,由点积定义可知 P.Q =|P| |Q| cos(theta) 2、旋转轴:由上可知,旋转角所在平面为P和Q构成的平面,那么旋转轴必定垂直于该平面, A X B =(a2b3-a3b2)i + (a3b1-a1b3)j + (a1b2-a2b1)k 3、根据罗德里格旋转公式求旋转矩阵 .png) 4、Code function RotateMatrix=F_GetRotateMatrix(vectsrc,vectdst) angle=acos(dot(vectsrc,vectdst)); vector=cross(vectsrc,vectdst); % normalization vector=vector/norm(vector); cost=cos(angle);sint=sin(angle); x=vector(1);y=vector(2);z=vector(3); ...

5月 4 2014
Libsvm 之svmpredict 输出概率
[p1,p2,p3]=svmpredict(label_test,testdata,svmstruct,'-b 1') 这个相比大家都用过,p1输出预估的类别,p2准确率,p3不同类的分类概率,但是这里面却有个小陷阱,之前我的理解,p3的一行代表不同类的概率,且是按照顺序排列的,既列的索引对应类别的索引,这次小师弟问我,才注意到并不是按照顺序的,而是在svmtrain训练的模型中既model.Label这个变量中,保存的类别,相应的,也是按照这个排序的。 [~,mdex]=max(p3(i,:)); %样本所属分类概率 p=model.Label(mdex);
评论

