0001
0002
0003 function [A11,A12,A13,A21,A22,A23]=pxcm_tsai(a,var_phys)
0004 a_read=a;
0005
0006 R=(a.R)';
0007
0008 x=var_phys(:,1);
0009 y=var_phys(:,2);
0010
0011 if isfield(a,'PlanePos')
0012 prompt={'Plane 1 Index','Plane 2 Index'};
0013 Rep=inputdlg(prompt,'Target displacement test');
0014 Z1=str2double(Rep(1));
0015 Z2=str2double(Rep(2));
0016 z=(a.PlanePos(Z2,3)+a.PlanePos(Z1,3))/2
0017 else
0018 z=0;
0019 end
0020
0021
0022 a.C11=R(1)*R(8)-R(2)*R(7);
0023 a.C12=R(2)*R(7)-R(1)*R(8);
0024 a.C21=R(4)*R(8)-R(5)*R(7);
0025 a.C22=R(5)*R(7)-R(4)*R(8);
0026 a.C1x=R(3)*R(7)-R(9)*R(1);
0027 a.C1y=R(3)*R(8)-R(9)*R(2);
0028 a.C2x=R(6)*R(7)-R(9)*R(4);
0029 a.C2y=R(6)*R(8)-R(9)*R(5);
0030
0031
0032
0033 denom=(R(7)*x+R(8)*y+R(9)*z+a.Tz).*(R(7)*x+R(8)*y+R(9)*z+a.Tz);
0034 A11=(a.f*a.sx*(a.C11*y-a.C1x*z+R(1)*a.Tz-R(7)*a.Tx)./denom)/a.dpx;
0035 A12=(a.f*a.sx*(a.C12*x-a.C1y*z+R(2)*a.Tz-R(8)*a.Tx)./denom)/a.dpx;
0036 A21=(a.f*a.sx*(a.C21*y-a.C2x*z+R(4)*a.Tz-R(7)*a.Ty)./denom)/a.dpy;
0037 A22=(a.f*(a.C22*x-a.C2y*z+R(5)*a.Tz-R(8)*a.Ty)./denom)/a.dpy;
0038 A13=(a.f*(a.C1x*x+a.C1y*y+R(3)*a.Tz-R(9)*a.Tx)./denom)/a.dpx;
0039 A23=(a.f*(a.C2x*x+a.C2y*y+R(6)*a.Tz-R(9)*a.Ty)./denom)/a.dpy;
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079