// 08.07.13 // 08.10.16 // 09.03.05 // 09.05.12 // 10.05.09 // 14.07.05 // 16.12.24 ( when kukanL=[] ) function Allres=Makeskeletondata(Obj2L,Plt2L,R0,Eps2) Eps=10.0^(-3); Dmat=[]; Dind=[]; for I=1:Mixlength(Plt2L) Dt=Mixop(I,Plt2L); N1=size(Dmat,1)+1; Dmat=[Dmat;Dt]; N2=size(Dmat,1); Dind=[Dind;N1,N2]; end; Nind=size(Dind,1); Allres=[]; for Nobj=1:Mixlength(Obj2L) Plt2=Mixop(Nobj,Obj2L); PhL=Plt2(:,1:2); ClipL=[]; for Ns=1:size(PhL,1)-1 P1=PhL(Ns:Ns+1,:); for I=1:size(Dind,1) Tmp=Dmat(Dind(I,1):Dind(I,2),:); P2=Tmp(:,1:2); KC=IntersectcrvsPp(P1,P2,Eps); if Mixlength(KC)>0 for J=1:Mixlength(KC) P=Mixop(1,Mixop(J,KC)); Tmp=Mixop(2,Mixop(J,KC)); if Tmp<1+Eps & Ns==1 // 2010.05.09 continue; end; if Tmp>Numptcrv(P1)-Eps & Ns==size(PhL,1)-1 continue; end; // N1=Ns; N2=Mixop(3,Mixop(J,KC)); Pa=Plt2(N1,1:2); Za=Plt2(N1,3); Pb=Plt2(N1+1,1:2); Zb=Plt2(N1+1,3); if norm(Pa-Pb)Eps^2 Tmp1=P1(2,:)-P1(1,:); Tmp2=Pb-Pa; Tmp3=Naiseki(Tmp1,Tmp2); Tmp3=Tmp3/norm(Tmp1)/norm(Tmp2); Tmp=1-0.5*Tmp3^2; ClipL=[ClipL;P,N1,T1,R0/Tmp]; end; end; end; end; end; end; Te=size(Plt2,1); KukanL=[1.0,Te]; P1=PhL; if size(ClipL,1)>0 for I=1:size(ClipL,1) P=ClipL(I,1:2); NN=ClipL(I,3); T=NN+ClipL(I,4); R=ClipL(I,5); Flg=0; for J=NN:-1:1 Q=PointonCurve(J,P1); if norm(P-Q)Eps Tmp=PointonCurve(T2,P1); PtL=Mixadd(PtL,Tmp); end; Res=Mixadd(Res,Listplot(PtL)); end; Allres=Mixjoin(Allres,Res); end; endfunction;