From 138f77fe71e43adc24ecb030d73df81cc5c4eb7e Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 4 Sep 2017 09:45:51 +0900 Subject: add ketpic --- .../ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci | 254 +++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100755 texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci') diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci new file mode 100755 index 00000000..3826b281 --- /dev/null +++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci @@ -0,0 +1,254 @@ +// 08.09.13 +// 09.12.31 (gsort) + +function FigkL=Nohiddenpara(varargin) + global HIDDENDATA THETA PHI; + Eps=0.001; + PaL=varargin(1); + Fk=varargin(2); + FuncdL=varargin(3); + Tmp=Mixop(1,FuncdL); + Fxy=Mixop(1,Tmp); + K=mtlb_findstr(Fxy,'='); + Fxy=part(Fxy,K+1:length(Fxy)); + Fbdxy=Mixop(2,FuncdL); + Tmp=Mixop(3,FuncdL); + Xname=Mixop(1,Tmp); + Tmp=Mixop(4,FuncdL); + Yname=Mixop(1,Tmp); + FigkL=[]; + if Fbdxy==[] + return; + end; + Bdy=Kyoukai(Fbdxy); + Ptn=0; + Fh=Projpara(Fk); + SeL=[]; + for N=1:length(PaL)-1 + S=(PaL(N)+PaL(N+1))/2; + P=PointonCurve(S,Fh); + Tmp=Invparapt(S,Fh,Fk) + Pk=Mixop(1,Tmp); + Qk=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)]; + Flg=zeros(1,Mixlength(Fbdxy)); + for I=1:1000 + Tmp=Pk+I*10*Qk; + Tmp1=Naigai(Tmp(1:2),Bdy); + if Tmp1==Flg + Flg=1; + Qk=Tmp; + break; + end; + end; + if Flg~=1 + disp('Bad EyePoint'); + return; + end; + T=poly(0,'t'); + P0=(1-T)*Pk+T*Qk; + X0str='('+pol2str(P0(1))+')'; + Y0str='('+pol2str(P0(2))+')'; + Z0str='('+pol2str(P0(3))+')'; + Tmp=strsubst(Fxy,Xname,X0str); + Tmp=strsubst(Tmp,Yname,Y0str); + Efn=Z0str+'-('+Tmp+')'; + t=0; + Tmp=evstr(Efn); + Eps=max(Eps,abs(Tmp)); + Tmp1=evstr([X0str,Y0str]); + t=1; + Tmp2=evstr([X0str,Y0str]); + Seg=Listplot([Tmp1,Tmp2]); + Tmp=[]; + for I=1:Mixlength(Fbdxy) + Tmp2=Mixop(I,Fbdxy); + Tmp1=IntersectcrvsPp(Seg,Tmp2,Eps); + if Mixlength(Tmp1)>0 + Tmp2=[]; + for J=1:Mixlength(Tmp1) + Tmp3=Mixop(J,Tmp1); + Tmp3=Mixop(2,Tmp3)-1; + Tmp2=[Tmp2,Tmp3]; + end; + Tmp=[Tmp,Tmp2]; + else + Tmp2=Mixop(I,Fbdxy); + Tmp1=Nearestpt(Tmp2,Seg); + Tmp3=Mixop(5,Tmp1); + if Tmp3Eps + ParamL=[ParamL,Tmp1]; + end; + end; + Nhdflg=0; + for M=1:length(ParamL)-1 + TL=[ParamL(M),ParamL(M+1)]; + t=TL(1); + Tmp1=evstr([X0str,Y0str]); + t=TL(2); + Tmp2=evstr([X0str,Y0str]); + Tmp=Naigai(0.5*(Tmp1+Tmp2),Bdy); + Tmp=modulo(sum(Tmp),2); + if Tmp==Ptn continue; end; + Ik=max(ceil(log((TL(2)-TL(1))/Eps)/log(2)),6); + t=TL(1); + Tmp1=evstr(Efn); + t=TL(2); + Tmp2=evstr(Efn); + if abs(Tmp1)<=Eps + if M>1 + Nhdflg=-10; + break; + end; + end; + if abs(Tmp2)<=Eps + Nhdflg=-10; + break; + end; + if Tmp2>Eps + if Tmp1<-Eps + Nhdflg=-10; + break; + end; + for I=1:Ik + AddL=[]; + VL=[]; + for J=1:length(TL)-1 + Tmp=(TL(J)+TL(J+1))*0.5; + AddL=[AddL,Tmp]; + t=Tmp; + Tmp1=evstr(Efn); + VL=[VL,Tmp1]; + end; + Tmp1=min(VL); + if Tmp1<=-Eps*2 + Nhdflg=-10; + break; + end; + TL=gsort([TL,AddL]); + end; + if Nhdflg~=0 break; end; + else + if Tmp1<-Eps + Nhdflg=-10; + break; + end; + for I=1:Ik + AddL=[]; + VL=[]; + for J=1:length(TL)-1 + Tmp=(TL(J)+TL(J+1))*0.5; + AddL=[AddL,Tmp]; + t=Tmp; + Tmp1=evstr(Efn); + VL=[VL,Tmp1]; + end; + Tmp1=max(VL); + if Tmp1>Eps*2 + Nhdflg=-10; + break; + end; + TL=gsort([TL,AddL]); + end; + if Nhdflg~=0 break; end; + end; + end; + if Nhdflg==0 + SeL=[SeL,N]; + end; + end; + FigL=[]; + FigkL=[]; + for I=1:length(SeL) + Tmp1=PointonCurve(PaL(SeL(I)),Fh); + Tmp2=PointonCurve(PaL(SeL(I)+1),Fh); + if I==1 + P=Tmp1; SP=PaL(SeL(I)); + Q=Tmp2; SQ=PaL(SeL(I)+1); + else + if Member(SeL(I)-1,SeL) + Q=Tmp2; SQ=PaL(SeL(I)+1); + else + FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh)); + Tmp3=Invparapt(SP,Fh,Fk); + TP=Mixop(2,Tmp3); + Tmp3=Invparapt(SQ,Fh,Fk); + TQ=Mixop(2,Tmp3); + Tmp4=Partcrv3(TP,TQ,Fk) + FigkL=Mixadd(FigkL,Tmp4); + P=Tmp1; SP=PaL(SeL(I)); + Q=Tmp2; SQ=PaL(SeL(I)+1); + end; + end; + end; + if length(SeL)>0 + if norm(P-Q)>Eps + FigL=Mixadd(FigL,Partcrv(P,Q,Fh)); + Tmp3=Invparapt(SP,Fh,Fk); + TP=Mixop(2,Tmp3); + Tmp3=Invparapt(SQ,Fh,Fk); + TQ=Mixop(2,Tmp3); + FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk)); + else + FigL=Mixadd(FigL,Fh); + FigkL=Mixadd(FigkL,Fk); + end; + end; + Tmp=[]; + for I=1:length(PaL)-1 + if ~Member(I,SeL) + Tmp=[Tmp,I]; + end; + end; + SeL=Tmp; + HIDDENDATA=[]; + for I=1:length(SeL) + Tmp=PaL(SeL(I)); + Tmp1=PointonCurve(Tmp,Fh); + Tmp=PaL(SeL(I)+1); + Tmp2=PointonCurve(Tmp,Fh); + if I==1 + P=Tmp1; SP=PaL(SeL(I)); + Q=Tmp2; SQ=PaL(SeL(I)+1); + else + if Member(SeL(I)-1,SeL) + Q=Tmp2; SQ=PaL(SeL(I)+1); + else + Tmp=Invparapt(SP,Fh,Fk); + TP=Mixop(2,Tmp); + Tmp=Invparapt(SQ,Fh,Fk); + TQ=Mixop(2,Tmp); + HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk)); + P=Tmp1; SP=PaL(SeL(I)); + Q=Tmp2; SQ=PaL(SeL(I)+1); + end; + end; + end; + if length(SeL)>0 + if norm(P-Q)>Eps + Tmp=Invparapt(SP,Fh,Fk); + TP=Mixop(2,Tmp); + Tmp=Invparapt(SQ,Fh,Fk); + TQ=Mixop(2,Tmp); + HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk)); + else + HIDDENDATA=Mixadd(HIDDENDATA,Fk); + end; + end; +endfunction; + -- cgit v1.2.3