summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs')
-rw-r--r--texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs673
1 files changed, 121 insertions, 552 deletions
diff --git a/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs b/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
index 9732be4b..1b6f69e1 100644
--- a/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
+++ b/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
@@ -14,7 +14,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>
//
-println("ketcindylib3d(2017.10.07) loaded");
+println("ketcindylib3d(2018.01.05) loaded");
//help:start();
@@ -1290,9 +1290,10 @@ Rotate3data(nm,P3data,w1,w2,options):=(
tmp1=Projpara(name3,["nodata"]);
tmp=name2+"="+textformat(tmp1,5);
parse(tmp);
- tmp=text(P3data);
- tmp=replace(tmp,"[","list(");
- tmp=replace(tmp,"]",")");
+ tmp=textformat(P3data,5); // 17.12.23
+ tmp=RSform(tmp); // 17.12.23
+// tmp=replace(tmp,"[","list(");
+// tmp=replace(tmp,"]",")");
tmp=name3+"=Rotate3data("+tmp+","
+textformat(w1,5)+","+textformat(w2,5)+opstr+")";
GLIST=append(GLIST,tmp);
@@ -1377,9 +1378,11 @@ Translate3data(nm,P3data,w1,options):=(
tmp1=Projpara(name3,["nodata"]);
tmp=name2+"="+textformat(tmp1,5);
parse(tmp);
- tmp=text(P3data);
- tmp=replace(tmp,"[","list(");
- tmp=replace(tmp,"]",")");
+ tmp=textformat(P3data,5); // 17.12.23
+ tmp=RSform(tmp); // 17.12.23
+// tmp=text(P3data);
+// tmp=replace(tmp,"[","list(");
+// tmp=replace(tmp,"]",")");
tmp=name3+"=Translate3data("+tmp+","+textformat(w1,5)+")";
GLIST=append(GLIST,tmp);
tmp=name2+"=Projpara("+name3+")";
@@ -3693,286 +3696,13 @@ Intersectcrvsf(nm,gdstr,fdorg,optionorg):=(
);
);
-Skeletonparadata2(nm):=Skeletonparadata2(nm,[]);
-Skeletonparadata2(nm,options):=(
- regional(tmp,tmp2,tmp3);
- // tmp=apply(GCLIST,#_1);
- // tmp=select(tmp,indexo(#,"2d")>0);
- // tmp2=select(tmp,indexof(#,"sub")==0);
- tmp3=Datalist3d();
- Changestyle3d(tmp3,["nodisp"]); // 15.06.02, 07.22
- // tmp3=apply(tmp2,replace(#,"2d","3d"));
- Skeletonparadata2(nm,"",tmp3,tmp3,options);
-);
-Skeletonparadata2(nm,Arg1,Arg2):=(
- regional(nme,pltdata1,pltdata2,options);
- if(isstring(Arg1) & islist(Arg2),
- nme=Arg1;
-// pltdata1=parse("phe3d"+nme);
- pltdata1="phe3d"+nme;
- pltdata2=pltdata1;
- options=Arg2;
- ,
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=[];
- );
- Skeletonparadata2(nm,nme,pltdata1,pltdata2,options);
-);
-Skeletonparadata2(nm,Arg1,Arg2,Arg3):=(
- regional(nme,pltdata1,pltdata2,options);
- if(!isstring(Arg1),
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=Arg3;
- ,
- if(isstring(Arg2) & !isstring(Arg3),
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=Arg3;
- ,
- nme=Arg1;
- pltdata1=Arg2;
- pltdata2=Arg3;
- options=[];
- );
- );
- Skeletonparadata2(nm,nme,pltdata1,pltdata2,options); // 15.07.09
-);
-Skeletonparadata2(nm,nme,pltdata1,pltdata2,options):=(
- regional(name2,name3,count,Ltype,Noflg,PdL,tmp,tmp1,tmp2,
- opstr,opcindy,Str,Outflg,Inflg,realL,pdata1,pdata2,level);
- name2="sk2d"+nm;
- name3="sk3d"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- Inflg=tmp_3;
- Outflg=tmp_4;
- if(Inflg==0 & Outflg==0, Inflg=1;Outflg=1); // 15.05.15
- realL=tmp_6;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- if(Noflg<3,
- if(Outflg>=1,
- println("Output Skeletonparadata2 "+name3);
- if(isstring(pltdata1), // 15.05.27 from
- tmp1=pltdata1;
- ,
- tmp1="";
- forall(pltdata1,
- tmp1=tmp1+#+",";
- );
- tmp1="list("+substring(tmp1,0,length(tmp1)-1)+")";
- );
- if(isstring(pltdata2),
- tmp2=pltdata2;
- ,
- tmp2="";
- forall(pltdata2,
- tmp2=tmp2+#+",";
- );
- tmp2="list("+substring(tmp2,0,length(tmp2)-1)+")";
- );
- Str="Skeletonpara3data("+tmp1+","+tmp2+opstr+")"; // 15.05.27 upto
- GLIST=append(GLIST,name3+"="+Str);
- tmp=name2+"=Projpara("+name3+")";
- GLIST=append(GLIST,tmp);
- );
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
- ,
- if(Noflg==1,Ltype=0);
- );
- if(Inflg==1,
-// tmp=apply(pltdata1,replace(#,"3d","2d")); // 15.05.18 from
- if(nme!="", // 15.05.27
- Changestyle3d("phe3d"+nme,["nodisp"]);
- ,
- forall(pltdata1, // 15.07.16
- tmp=replace(#,"3d","2d");
- if(contains(GCLIST,tmp),
- Changestyle3d(#,["nodisp"]);
- );
- );
- );
- GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
- );
- );
-);
-
-Skeletonparadata(nm):=Skeletonparadata(nm,[]);
-Skeletonparadata(nm,options):=(
- regional(tmp,tmp2,tmp3);
- tmp3=Datalist3d();
- Skeletonparadata(nm,"",tmp3,tmp3,options);
-// Changestyle3d(tmp3,["nodisp"]); // 15.06.02, 07.22
-);
-Skeletonparadata(nm,Arg1,Arg2):=(
-//help:Skeletonparadata("1");
-//help:Skeletonparadata("1",[pdata1,pdata2],[pdata3]);
-//help:Skeletonparadata(options2=[width(1), "Wait=20]);
- regional(nme,pltdata1,pltdata2,options);
- if(isstring(Arg1) & islist(Arg2),
- nme=Arg1;
-// pltdata1=parse("phe3d"+nme);
- pltdata1="phe3d"+nme;
- pltdata2=pltdata1;
- options=Arg2;
- ,
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=[];
- );
- Skeletonparadata(nm,nme,pltdata1,pltdata2,options);
-);
-Skeletonparadata(nm,Arg1,Arg2,Arg3):=(
- regional(nme,pltdata1,pltdata2,options);
- if(!isstring(Arg1),
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=Arg3;
- ,
- if(isstring(Arg2) & !isstring(Arg3),
- nme="";
- pltdata1=Arg1;
- pltdata2=Arg2;
- options=Arg3;
- ,
- nme=Arg1;
- pltdata1=Arg2;
- pltdata2=Arg3;
- options=[];
- );
- );
- Skeletonparadata(nm,nme,pltdata1,pltdata2,options); // 15.07.09
-);
-Skeletonparadata(nm,nme,pltdata1org,pltdata2org,optionorg):=(
- regional(name2,name3,eqL,strL,options,fname,outreg,waiting,
- reL, pltdata1,pltdata2,wflg,opcindy,width,pdata,
- tmp,tmp1,tmp2);
- name2="sk2d"+nm;
- name3="sk3d"+nm;
- fname=Fhead+"sk"+nm+".txt";
- pltdata1=[];// 16.01.31
- forall(pltdata1org,tmp1,
- tmp=parse(tmp1);
- if(isstring(tmp_1),
- pltdata1=concat(pltdata1,tmp);
- ,
- pltdata1=append(pltdata1,tmp1);
- );
- );
- pltdata2=[];// 16.01.31
- forall(pltdata2org,tmp1,
- tmp=parse(tmp1);
- if(isstring(tmp_1),
- pltdata2=concat(pltdata2,tmp);
- ,
- pltdata2=append(pltdata2,tmp1);
- );
- );
- options=optionorg;
- tmp=Divoptions(options);
- eqL=tmp_5;
- reL=tmp_6; //16.02.28
- strL=tmp_7;
- opcindy=tmp_9;
- waiting=20;
- outreg=0;
- forall(eqL,
- tmp=indexof(#,"=");
- tmp1=Toupper(substring(#,0,1));
- tmp2=substring(#,tmp,length(#));
- if(tmp1=="W",
- waiting=parse(tmp2);
- options=remove(options,[#]);
- );
- if(tmp1=="O",
- tmp=Toupper(substring(tmp2,0,1));
- if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
- options=remove(options,[#]);
- );
- );
- wflg=0;
- forall(strL,
- tmp=Toupper(substring(#,0,1));
- if(tmp=="M",
- wflg=1;
- options=remove(options,[#]);
- );
- if(tmp=="R",
- wflg=-1;
- options=remove(options,[#]);
- );
- );
- width=1;
- if(length(reL)>0, //16.02.28
- width=reL_1;
- );
- forall(pltdata1,pdata,
- tmp=select(GLIST,indexof(#,pdata+"=")>0);
- if(tmp==0,
- Defvar(pdata,parse(pdata));
- );
- );
- forall(pltdata2,pdata,
- tmp=select(GLIST,indexof(#,pdata+"=")>0);
- if(tmp==0,
- tmp=select(VLIST,#_1==pdata);
- if(tmp==0,
- Defvar(pdata,parse(pdata));
- );
- );
- );
- cmdL=MkprecommandS(4);
- tmp2=[
- Dq+fname+Dq,
- Dq+name3+Dq,name3,
- Dq+name2+Dq,name2
- ];
- cmdL=concat(cmdL,[
- "Setangle",[THETA,PHI]*180/pi,
- name3+"=Skeletonpara3data",[pltdata1,pltdata2,width,"Error"],
- name2+"=Projpara",[name3],
- "WriteOutData",tmp2
- ]);
- options=append(options,"Wait="+text(waiting));
- if(wflg==1,options=concat(options,["m"]));
- if(wflg==-1,options=concat(options,["r"]));
- if(ErrFlag==0,
- CalcbyS("sk"+nm,cmdL,options);
- );
- if(ErrFlag==1,
- err("Skeletonparadata not completed");
- ,
- if(outreg==1,
- OutFileList=remove(OutFileList,[fname]);
- OutFileList=append(OutFileList,fname);
- );
- ReadOutData(fname);
- if(islist(parse(name2)),
- Extractdata(name2,options);
-// if(isstring(pltdata1_1), // 16.01.31
- tmp=apply(pltdata1,replace(#,"3d","2d"));
-// ,
-// tmp=replace(pltdata1org,"3d","2d");
-// );
- Changestyle(tmp,["nodisp"]);
-// Changestyle3d(pltdata1,["nodisp"]);
- ,
- ErrFlag=1;
- );
- );
-);
+////////////// new skeleton 2018.01.04from ////////////////
+Skeletonparadata(nm):=Skeletondatacindy(nm,[]);
+Skeletonparadata(nm,options):=Skeletondatacindy(nm,options);
+Skeletonparadata(nm,pltdata1,pltdata2):=Skeletondatacindy(nm,pltdata1,pltdata2);
+Skeletonparadata(nm,pltdata1org,pltdata2org,options):=
+ Skeletondatacindy(nm,pltdata1org,pltdata2org,options);
Skeletondatacindy(nm):=Skeletondatacindy(nm,[]);
Skeletondatacindy(nm,options):=(
regional(tmp);
@@ -3982,11 +3712,11 @@ Skeletondatacindy(nm,options):=(
Skeletondatacindy(nm,pltdata1,pltdata2):=
Skeletondatacindy(nm,pltdata1,pltdata2,[]);
Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=(
-//help:Skeletondatacindy("1");
-//help:Skeletondatacindy("1",[pdata1,pdata2],[pdata3]);
-//help:Skeletondatacindy(options2=[1(width)]);
+//help:Skeletonparadata("1");
+//help:Skeletonparadata("1",[pdata1,pdata2],[pdata3]);
+//help:Skeletondata(options2=[1(width)]);
regional(Eps,Eps2,name2,name3,Ltype,Noflg,reL,opcindy,
- Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data,
+ Data,Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data,
Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2);
name2="sk2d"+nm;
name3="sk3d"+nm;
@@ -4005,7 +3735,7 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=(
Noflg=tmp_2;
reL=tmp_6; //16.02.28
opcindy=tmp_9;
- Rr=0.075*1000/2.54/MilliIn;
+ Rr=0.15*1000/2.54/MilliIn;
size=1;
Eps2=0.05;
if(length(reL)>0, //16.02.28
@@ -4015,34 +3745,14 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=(
);
Eps=10^(-4);
ObjL=Flattenlist(pltdata1);
- Plt3L=Flattenlist(pltdata2);
- tmp=apply(Plt3L,ProjcoordCurve(#));
- Plt2L=Flattenlist(tmp);
-/////////// tmp=apply(pltdata1,replace(#,"3d","2d"));
- Out=[];
- forall(1..(length(ObjL)),ii,
- Obj3=ObjL_ii;
- tmp=ProjcoordCurve(Obj3);
- Data=Makeskeletondata([tmp],Plt2L,Rr,Eps2);
- forall(1..(length(Data)),jj,
- Gd=Data_jj;
- if((length(Gd)>1)
- & (norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps),
- PtD=[];
- forall(1..(length(Gd)),
- tmp=Gd_#;
- tmp1=Invparapt(tmp,Obj3);
- PtD=append(PtD,tmp1);
- );
- Out=append(Out,PtD);
- );
- );
- );
- Out=select(Out,length(Projcurve(#))>0); // 16.12.19
+ PltL=Flattenlist(pltdata2);
+ Data=Makeskeletondata(ObjL,PltL,Rr);
+ Out=select(Data,length(Projcurve(#))>0);
+ Out=Flattenlist(Out);
tmp1=apply(Out,textformat(#,5));
tmp=name3+"="+tmp1;
parse(tmp);
- tmp=name2+"=Projcurve("+tmp1+");";
+ tmp=name2+"=Projcurve("+name3+");";
parse(tmp);
Changestyle3d(pltdata1org,["nodisp"]);
if(Noflg<3,
@@ -4071,262 +3781,121 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=(
Out;
);
-Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=(
- regional(Allres,Eps,Dmat,Dind,ii,Dt,nn1,nn2,Nind,Nobj,
- Plt2,PhL,ClipL,ns,pt1,pt2,pt,pta,ptb,za,zb,z1,z2,t1,t2,te,
- koc,KukanL,nn,tt,Rr,Flg,ii,jj,ptq,hh,Ku,Res,contflg,breakflg);
- Eps=10.0^(-4);
- Dmat=[];
- Dind=[];
- forall(1..(length(Plt2L)),ii,
- Dt=Plt2L_ii;
- nn1=length(Dmat)+1;
- Dmat=concat(Dmat,Dt);
- nn2=length(Dmat);
- Dind=append(Dind,[nn1,nn2]);
- );
- Nind=length(Dind);
+Makeskeletondata(ObjL,PltL,R0):=(
+ regional(Allres,res,Eps1,obj,plt,obj2,remov,flg,koc,z1,z2,Rr,str,
+ mm,nn,kk,ptk,pL,pt,ptL,tmp,tmp1,tmp2,tmp3,tmp3d);
+ Eps1=10.0^(-2);
Allres=[];
- forall(1..(length(Obj2L)),Nobj,
- Plt2=Obj2L_Nobj;
- PhL=Columnlist(Plt2,1..2);
- ClipL=[];
- forall(1..(length(PhL)-1),ns,
- pt1=PhL_(ns..(ns+1));
- forall(1..(length(Dind)),ii,
- tmp=Dind_ii;
- tmp=Dmat_(Dind_ii_1..Dind_ii_2);
- pt2=Columnlist(tmp,1..2);
- koc=IntersectcrvsPp(pt1,pt2,[Eps]);
- if(length(koc)>0,
- breakflg=0;
- forall(1..(length(koc)),jj,
- contflg=0;
- if(breakflg==0,
- pt=Op(1,Op(jj,koc));
- tmp=Op(2,Op(jj,koc));
- if((tmp<1+Eps) & (ns==1),
- contflg=1;
- );
- if(contflg==0,
- if((tmp>length(pt1)-Eps)
- & (ns==length(PhL)-1),
- contflg=1;
- );
- );
- if(contflg==0,
- nn1=ns;
- nn2=Op(3,Op(jj,koc));
- tmp=Plt2_nn1;
- pta=tmp_(1..2);
- za=tmp_3;
- tmp=Plt2_(nn1+1);
- ptb=tmp_(1..2);
- zb=tmp_3;
- if(norm(pta-ptb)<Eps,
- contflg=1;
- );
- );
- if(contflg==0,
- t1=norm(pta-pt)/norm(pta-ptb);
- z1=(1-t1)*za+t1*zb;
- tmp=Dmat_(Dind_ii_1..Dind_ii_2);
- tmp1=tmp_nn2;
- pta=tmp1_(1..2);
- za=tmp1_3;
- tmp2=tmp_(nn2+1);
- ptb=tmp2_(1..2);
- zb=tmp2_3;
- if(norm(pta-ptb)<Eps,
- contflg=1;
- );
- );
- if(contflg==0,
- t2=norm(pta-pt)/norm(pta-ptb);
- z2=(1-t2)*za+t2*zb;
- if(z1<z2-Eps2,
- if(length(ClipL)==0,
- tmp=1;
- ,
- tmp1=column(ClipL,1);
- tmp1=apply(tmp1,#-pt_1);
- tmp2=column(ClipL,2);
- tmp2=apply(tmp2,#-pt_2);
- tmp3=apply(tmp1,#^2)+apply(tmp2,#^2);
- tmp=min(tmp3);
- );
- if(tmp>Eps^2,
- tmp1=pt1_2-pt1_1;
- tmp2=ptb-pta;
- tmp3=Dotprod(tmp1,tmp2);
- tmp3=tmp3/norm(tmp1)/norm(tmp2);
- tmp=1-0.5*tmp3^2;
- tmp1=concat(pt,[nn1,t1,R0/tmp]);
- ClipL=append(ClipL,tmp1);
- );
- );
+ forall(1..(length(ObjL)),mm,
+ obj=ObjL_mm;
+ remov=[];
+ obj2=Projcurve(obj);
+ forall(1..(length(PltL)),nn,
+
+ plt=PltL_nn;
+ tmp=Projcurve(plt);
+ koc=Intersectcurves(obj2,tmp);
+ forall(1..(length(koc)),kk,
+ ptk=koc_kk;
+ tmp=PointonCurve(ptk_2,obj);
+ z1=Zparapt(tmp);
+ tmp=PointonCurve(ptk_3,plt);
+ z2=Zparapt(tmp);
+ if(z1<z2-Eps1,
+ tmp=max([sqrt(1-(ptk_5)^2),0.75]);
+ Rr=R0/tmp;
+ tmp2=[];
+ flg=0;
+ tmp=reverse(1..(floor(ptk_2)));
+ forall(tmp,
+ if(flg==0,
+ if(|obj2_#-ptk_1|>Rr,
+ tmp2=[#];
+ flg=1;
);
);
);
- );
- );
- );
- te=length(Plt2);
- KukanL=[[1.0,te]];
- pt1=PhL;
- if(length(ClipL)>0,
- forall(1..(length(ClipL)),ii,
- tmp=ClipL_ii;
- pt=tmp_(1..2);
- nn=tmp_3;
- tt=nn+tmp_4;
- Rr=tmp_5;
- Flg=0;
- breakflg=0;
- forall(reverse(1..nn),jj,
- contflg=0;
- if(breakflg==0,
- ptq=PointonCurve(jj,pt1);
- if(norm(pt-ptq)<Rr,
- contflg=1;
- );
- if(contflg==0,
- Flg=jj;
- breakflg=1;
- contflg=1;
- );
- );
- );
- if(Flg==0,
- t1=1;
- ,
- t1=Flg; t2=tt;
- hh=t2-t1;
- forall(1..10,
- hh=hh*0.5;
- ptq=PointonCurve(t1+hh,pt1);
- if(norm(pt-ptq)<Rr,
- t2=t2-hh;
- ,
- t1=t1+hh;
+ if(length(tmp2)==0,tmp2=[1]);
+ flg=0;
+ tmp=(ceil(ptk_2))..(length(obj2));
+ forall(tmp,
+ if(flg==0,
+ if(|obj2_#-ptk_1|>Rr,
+ tmp2=append(tmp2,#);
+ flg=1;
+ );
);
);
- );
- Ku=[t1];
- Flg=0;
- breakflg=0;
- forall((nn+1)..te,jj,
- contflg=0;
- if(breakflg==0,
- ptq=PointonCurve(jj,pt1);
- if(norm(pt-ptq)<Rr,
- contflg=1;
- );
- if(contflg==0,
- Flg=jj;
- breakflg=1;
- contflg=1;
- );
+ if(length(tmp2)==1,tmp2=append(tmp2,length(obj2)));
+ tmp=obj2_((tmp2_1)..(tmp2_2));
+ tmp1=Circledata("",[ptk_1,ptk_1+[Rr,0]],["Num=8","nodata"]);
+ tmp1=Intersectcurves(tmp,tmp1);
+ if(length(tmp1)==2,
+ tmp=sort([tmp1_1_2,tmp1_2_2]);
+ tmp=[[tmp2_1-1+tmp_1,1],[tmp2_1-1+tmp_2,-1]];
+ remov=concat(remov,tmp);
);
- );
- if(Flg==0,
- t2=te;
- ,
- t1=tt; t2=Flg;
- hh=t2-t1;
- forall(1..10,
- hh=hh*0.5;
- ptq=PointonCurve(t1+hh,pt1);
- if(norm(pt-ptq)<Rr,
- t1=t1+hh;
+ if(length(tmp1)==1,
+ if(tmp2_1==1,
+ tmp=[[1,1],[tmp2_1-1+tmp1_1_2,-1]];
,
- t2=t2-hh;
+ tmp=[[tmp2_1-1+tmp1_1_2,1],[length(obj2),-1]];
);
+ remov=concat(remov,tmp);
);
);
- Ku=append(Ku,t2);
- KukanL=Kukannozoku(Ku,KukanL);
- );
- );
- Res=[];
- forall(1..(length(KukanL)),ii,
- tmp=KukanL_ii;
- t1=tmp_1; nn1=floor(t1);
- t2=tmp_2; nn2=floor(t2);
- PtL=[];
- if(t1-nn1<1-Eps,
- tmp=PointonCurve(t1,pt1);
- PtL=[tmp];
- );
- forall((nn1+1)..nn2,jj,
- tmp=PointonCurve(jj,pt1);
- PtL=append(PtL,tmp);
);
- if(t2-nn2>Eps,
- tmp=PointonCurve(t2,pt1);
- PtL=append(PtL,tmp);
- );
- tmp=Listplot("",PtL,["nodata"]);
- Res=append(Res,tmp);
);
- Allres=concat(Allres,Res);
- );
- Allres;
-);
-
-Kukannozoku(Jokyo,KukanL):=(
- regional(Res,Eps,nn,ii,t1,t2,Ku,Flg,contflg,tmp,tmp1);
- Eps=10^(-6);
- nn=length(KukanL);
- t1=Jokyo_1; t2=Jokyo_2;
- tmp=KukanL_1;
- t1=max(t1,tmp_1);
- tmp=KukanL_nn;
- t2=min(t2,tmp_2);
- Res=[];
- Flg=0;
- contflg=0;
- forall(1..nn,ii,
- if(contflg==0,
- Ku=KukanL_ii;
- if(Flg==0,
- if(Ku_2<t1,
- Res=append(Res,Ku);
- ,
- Flg=1;
- if(Ku_1<t1-Eps,
- tmp=[Ku_1,t1];
- Res=append(Res,tmp);
- );
- if(Ku_2>t2+Eps,
- tmp=[t2,Ku_2];
- Res=append(Res,tmp);
- );
- );
+ if(length(remov)==0,
+ res=obj;
+ ,
+ res=[];
+ remov=sort(remov,[#_1,#_2]);
+ tmp=select(remov,#_1<1-Eps1);
+ if(length(tmp)==0,
+ flg=0;
+ res=[1];
,
- if(Flg==1,
- if(Ku_2<t2,
- contflg=1;
- ,
- if(contflg==0,
- Flg=2;
- if(Ku_1<t2-Eps,
- Ku=[t2,Ku_2];
- );
- Res=append(Res,Ku);
- );
- );
- ,
- if(contflg==0,
- Res=append(Res,Ku);
- );
+ flg=length(tmp);
+ res=[];
+ );
+ forall(remov,
+ tmp=flg;
+ if(#_2==-1,
+ flg=flg-1;
+ if(flg==0,res=append(res,#_1));
+ );
+ if(#_2==1,
+ flg=flg+1;
+ if(tmp==0,res=append(res,#_1));
+ );
+ );
+ if((flg==0)&(res_(length(res))<length(obj)),
+ res=append(res,length(obj));
+ );
+ tmp=res;
+ res=[];
+ forall(1..(length(tmp)/2),nn,
+ tmp1=tmp_(2*nn-1);
+ tmp2=tmp_(2*nn);
+ pL=(ceil(tmp1))..(floor(tmp2));
+ if(tmp1<ceil(tmp1)-Eps1,pL=prepend(tmp1,pL));
+ if(tmp2>floor(tmp2)+Eps1,pL=append(pL,tmp2));
+ ptL=[];
+ forall(pL,
+ pt=PointonCurve(#,obj);
+ ptL=append(ptL,pt);
);
+ res=append(res,ptL);
);
);
+ Allres=append(Allres,res);
);
- Res;
+ Allres;
);
+////////////// new skeleton 2018.01.04upto ////////////////
+
ProjcoordCurve(Curve):=(
regional(SP,CP,ST,CT,Out,jj,pt,x,y,z,xz,yz,zz);
SP=sin(PHI); CP=cos(PHI);