summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci')
-rw-r--r--texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci186
1 files changed, 186 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci b/texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci
new file mode 100644
index 00000000..fc2847c7
--- /dev/null
+++ b/texmf-dist/scripts/ketcindy/ketlib/ketpicscifiles6/Dotfilldata.sci
@@ -0,0 +1,186 @@
+// 08.05.31
+// 10.01.01
+// 10.03.07 (Kosa )
+
+function ShaL=Dotfilldata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ Nargs=length(varargin);
+ ShaL=[];
+ Eps=0.01;
+ Kakudo=45;
+ Kosa=0.5;
+ 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
+ Kosa=varargin(N+1);
+ end
+// Kosa=min(Kosa,1); // 100307
+ Tmp=1/(2*Kosa);
+ Kankaku=Tmp*0.100*1000/2.54/MilliIn;
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(XMIN+XMAX)/2,(YMIN+YMAX)/2];
+ else
+ StartP=Doscaling(StartP);
+ end;
+ Tmp=varargin(2);
+ if Mixtype(Tmp)==1
+ StartP=Doscaling(Tmp);
+ Ns=3;
+ end
+ Tmp=[];
+ for I=Ns:N
+ Tmp=Mixjoin(Tmp,list(varargin(I)));
+ 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=[];
+ 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=[];
+ for I=1:Mixlength(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,list(Tmp1));
+ 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)>1
+ Delta=Tmp-StartP;
+ K=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ P=PA;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=I+1;
+ end
+ P=PA-Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA-I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ P=StartP+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ if length(Sha)>0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,Tmp1);
+ end;
+ ShaL=ShaLs
+endfunction