发信人: freemoon (yuxiang), 信区: Matlab
标 题: 如何用2个点在2个坐标系中的坐标,建立坐标系之间的变换矩阵?
发信站: 紫丁香社区 (Tue Jun 17 10:48:18 2008), 站内
如何用2个点在2个坐标系中的坐标,建立起坐标系之间的变换矩阵?
旋转矩阵R和平移矩阵T
--
帮助是树状拓扑结构,它会蔓延!
※ 来源:·紫丁香社区 http://lilacbbs.com·[FROM: 61.167.*.*]
数学模型如下建立
R*P1*k+S=P2
其中
R=[cos(a),-sin(a);sin(a),cos(a)]; % 旋转矩阵
S=[x0;y0]; % 平移项
K的缩放系数
P1=[x1;y1]; % 第一坐标系坐标
P2=[x2;y2]; % 第二坐标系坐标
程序如下:
function [R,S,K]=rotate_shift(x1,y1,x2,y2,X1,Y1,X2,Y2);
% A是旋转矩阵
% S是平移矩阵
% K是缩放系数
% (x1,y1)和(x2,y2)是第一坐标系的坐标
% (X1,Y1)和(X2,Y2)是第二坐标系的坐标
% Example:
% [R,S,K]=rotate_shift(1,2,3,4,5,6,7,8);
A = angle([X1-X2]+i*[Y1-Y2])-angle([x1-x2]+i*[y1-y2]);
R = [cos(A),-sin(A);sin(A),cos(A)];
K = abs([X1-X2]+i*[Y1-Y2])/abs([x1-x2]+i*[y1-y2]);
S = [X1;Y1]-R*[x1;y1]*K;

