normalizeshape.m

来自「asm工具箱」· M 代码 · 共 27 行

M
27
字号
%%%%%%%%%%%%%%%%%%%%%%%%%%
%(c) Ghassan Hamarneh 1999
%%%%%%%%%%%%%%%%%%%%%%%%%%
function [xNew,yNew]=NormalizeShape(xOld,yOld);
%function [xNew,yNew]=NormailzeShape(xOld,yOld);

%the distance between point 1 and 2 scale it to unity (s=1/d)
dx=xOld(2)-xOld(1);
dy=yOld(2)-yOld(1);
s=1/sqrt(dx^2+dy^2);

%make the line pt1-pt2  horizpntal by rotating it negative its angle (Theta= - angle of slope)
Theta=-atan(dy/dx);
if (dx<0) Theta=Theta+pi; end
   
%scale and rotate but NO translation
NewX=ScaleRotateTranslate([xOld;yOld],s,Theta,0,0);

% now translate to make the mean of x and y at origin (center of mass on origin)
tx=-mean(NewX(1:end/2));
ty=-mean(NewX(end/2+1:end));
NewX=NewX+[tx*ones(length(NewX)/2,1);ty*ones(length(NewX)/2,1)];

xNew=NewX(1      :end/2);
yNew=NewX(end/2+1:end);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?