0001 function rtp=ThetaPhiGirder(r,mag_gr)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 gm=cellfun(@(mg)gmisal(r,mg),mag_gr,'un',0);
0012
0013 magindex=[mag_gr{:}];
0014 allmisg=[gm{:}];
0015
0016
0017
0018
0019 rtp=r;
0020 nsig=2;
0021
0022 errfun=@(r,po,er)setANYshift(r,po,1,er);
0023
0024 rtp=seterrorrand(rtp,magindex,errfun,0,0,nsig,allmisg(1,:));
0025
0026 errfun=@(r,po,er)setANYshift(r,po,3,er);
0027
0028 rtp=seterrorrand(rtp,magindex,errfun,0,0,nsig,allmisg(2,:));
0029
0030
0031 return
0032
0033 function gm=gmisal(r,mg)
0034
0035 sg=findspos(r,mg);
0036 gc=(max(sg)+min(sg))/2;
0037
0038 dg=sg-gc;
0039
0040 tg=atgetfieldvalues(r,mg,'RotAboutX',{1,1});
0041 pg=atgetfieldvalues(r,mg,'RotAboutY',{1,1});
0042
0043 gm=zeros(length(mg),2);
0044
0045 if ~isempty(tg)
0046 gm(:,2)=dg'.*sin(tg);
0047 end
0048 if ~isempty(pg)
0049 gm(:,1)=dg'.*sin(pg);
0050 end
0051
0052 gm=gm';
0053 return
0054
0055