summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci141
1 files changed, 141 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci
new file mode 100755
index 00000000..236287ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci
@@ -0,0 +1,141 @@
+// 08.05.21
+// 09.10.05
+// 09.12.25
+// 10.01.20
+// 10.02.01
+// 10.11.04 ( debugged 83 )
+
+function ShaLs=Hatchdata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ ShaL=[];
+ Nargs=length(varargin);
+ Kakudo=45;
+ Kankaku=0.125*1000/2.54/MilliIn;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xmn=Tmp(1); Ymn=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ Xmx=Tmp(1); Ymx=Tmp(2);
+ for N=Nargs:-1:1
+ Tmp=varargin(N);
+ if Mixtype(Tmp)~=1
+ break
+ end
+ end
+ if N<Nargs
+ Kakudo=varargin(N+1);
+ if N==Nargs-2
+ Kankaku=0.125*varargin(Nargs);
+ end
+ end
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(Xmn+Xmx)/2,(Ymn+Ymx)/2];
+ end
+ if Mixtype(varargin(2))==1
+ StartP=varargin(2);
+ StartP=Doscaling(StartP);
+ Ns=3;
+ end
+ Tmp=list();
+ for I=Ns:N
+ Tmp1=list(varargin(I));
+ Tmp=Mixjoin(Tmp,Tmp1);
+ end
+ Bdy=Kyoukai(Tmp);
+ Bdys=list();
+ for I=1:length(Bdy)
+ Tmp1=Bdy(I);
+ Tmp2=Doscaling(Tmp1);
+ Bdys=Mixjoin(Bdys,list(Tmp2));
+ end;
+ Bdy=Bdys;
+ PtnL=list();
+ for I=1:length(NaitenL)
+ Tmp=Op(I,NaitenL);
+ if type(Tmp)==1
+ Tmp1=Naigai(Tmp,Bdy);
+ PtnL=Mixjoin(PtnL,list(Tmp1));
+ else
+ if type(Tmp)~=10
+ disp('Type Error');
+ return
+ end
+ Ptn=[];
+ for J=1:length(Tmp)
+ if Op(J,Tmp)=='i'
+ Ptn=[Ptn,1];
+ else
+ Ptn=[Ptn,0];
+ end
+ end
+ PtnL=Mixjoin(PtnL,list(Ptn));
+ end
+ end
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ if Member(Ptn,PtnL)
+ Wn=Doscaling(Framedata());
+ Bdy=Mixjoin(Bdy,list(Wn));
+ Tmp=list();
+ for I=1:length(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,Tmp1); // 10.11.04
+ end
+ PtnL=Tmp;
+ end
+ V=[cos(Kakudo*%pi/180),sin(Kakudo*%pi/180)];
+ Vm=[-sin(Kakudo*%pi/180),cos(Kakudo*%pi/180)];
+ Tmp=Op(1,NaitenL);
+ if type(Tmp)==1 & size(Tmp,2)==2
+ Tmp=Doscaling(Tmp);
+ Delta=Tmp-StartP;
+ K=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,PA,V,Bdy);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixadd(ShaL,Sha(J));
+ end;
+ Sha=Makeshasen(PtnL,PA+I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ Sha=Makeshasen(PtnL,PA-Kankaku*Vm,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end;
+ Sha=Makeshasen(PtnL,PA-I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ Sha=Makeshasen(PtnL,StartP+I*Kankaku*Vm,V,Bdy);
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,list(Tmp1));
+ end;
+endfunction;