summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci58
1 files changed, 58 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci
new file mode 100755
index 00000000..bf9572c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci
@@ -0,0 +1,58 @@
+// 08.09.10
+// 08.09.16
+// 09.12.31 (gsort)
+
+function OutL=Clipindomain(ObjL,FigL)
+ EEps=10^(-4);
+ Eps=0.01;
+ Eps2=0.2;
+ Bdy=Kyoukai(FigL);
+ if Mixlength(Bdy)>=2
+ Fbdy=Joincrvs(FigL)
+ else
+ Fbdy=Mixop(1,FigL);
+ end;
+ if Mixtype(ObjL)==1
+ ObjL=Mix(ObjL)
+ end;
+ if Mixtype(FigL)==1
+ FigL=Mix(FigL)
+ end;
+ OutL=[];
+ for Nobj=1:Mixlength(ObjL);
+ Obj=Mixop(Nobj,ObjL);
+ ParL=[1,Numptcrv(Obj)];
+ Tmp=IntersectcrvsPp(Obj,Fbdy,Eps,Eps2);
+ for J=1:Mixlength(Tmp)
+ Tmp1=Mixop(J,Tmp);
+ ParL=[ParL,Mixop(2,Tmp1)];
+ end;
+ ParL=gsort(ParL);
+ ParL=ParL(length(ParL):-1:1);
+ Tmp=[1];
+ for I=1:length(ParL)
+ Tmp1=Tmp(length(Tmp));
+ Tmp2=ParL(I);
+ if Tmp2-Tmp1>EEps
+ Tmp=[Tmp,Tmp2];
+ end;
+ end;
+ ParL=Tmp;
+ Tmp1=ParL(length(ParL));
+ Tmp2=Numptcrv(Obj);
+ if abs(Tmp1-Tmp2)<Eps
+ ParL=[ParL(1:length(ParL)-1),Tmp2];
+ end;
+ Fig=[];
+ for N=1:length(ParL)-1
+ Tmp=(ParL(N)+ParL(N+1))*0.5;
+ Tmp=PointonCurve(Tmp,Obj);
+ Tmp=Naigai(Tmp,Bdy);
+ Tmp1=modulo(sum(Tmp),2);
+ if Tmp1==0 continue; end;
+ Fig=Mixadd(Fig,Partcrv(ParL(N),ParL(N+1),Obj));
+ end;
+ OutL=Mixjoin(OutL,Fig);
+ end;
+endfunction;
+