annotate mt_calibrate.m @ 0:be936975f254

Initial check in.
author samer
date Wed, 01 Feb 2012 14:06:37 +0000
parents
children 39d4f9e57b26
rev   line source
samer@0 1 % mt_calibrate - Set spatial calibration of melody triangle system.
samer@0 2 %
samer@0 3 % mt_calibrate ::
samer@0 4 % mt_system ~'system to calibrate',
samer@0 5 % I:[[1,E]->[3]] ~'list triangle corners being updated',
samer@0 6 % P:[[3,E]] ~'X-Y coordinates of the E corners being updated'
samer@0 7 % -> mt_system ~'calibrated system'.
samer@0 8
samer@0 9 function Sys=mt_calibrate(Sys,I,PI)
samer@0 10
samer@0 11 if nargin>2, Sys.refpoints(:,I) = PI; end
samer@0 12 P = Sys.refpoints;
samer@0 13 p0 = P(:,1);
samer@0 14 Sys.map = info_map_fn(p0,inv(P(:,2:3)-repmat(p0,1,2)));
samer@0 15 end
samer@0 16
samer@0 17 function f=info_map_fn(p0,M)
samer@0 18 f=@(p)clip_tri(M*(p-p0));
samer@0 19 end
samer@0 20
samer@0 21 function x=clip_tri(x)
samer@0 22 if x(2)<0
samer@0 23 x(2)=0;
samer@0 24 if x(1)<0, x(1)=0;
samer@0 25 elseif x(1)>1, x(1)=1;
samer@0 26 end
samer@0 27 elseif x(1)<0
samer@0 28 x(1)=0;
samer@0 29 if x(2)<0, x(2)=1;
samer@0 30 elseif x(2)>1, x(2)=1;
samer@0 31 end
samer@0 32 else
samer@0 33 d = [1,1]*x - 1;
samer@0 34 if d>0
samer@0 35 x = x - d/2;
samer@0 36 if x(1)<0, x=[0;1];
samer@0 37 elseif x(2)<0, x=[1;0];
samer@0 38 end
samer@0 39 end
samer@0 40 end
samer@0 41 end
samer@0 42