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.cs1110
1 files changed, 788 insertions, 322 deletions
diff --git a/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs b/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
index 1b6f69e1..ce7a65f1 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(2018.01.05) loaded");
+println("ketcindylib3d(20180327) loaded");
//help:start();
@@ -79,12 +79,15 @@ Ketinit3d(subflg,position):=(
ErrFlg=0;
);
-Start3d():=Start3d([]); //16.11.12
-Start3d(ptexception):=( //16.11.12
+Start3d():=Start3d([]);
+Start3d(ptexception):=(
//help:Start3d();
//help:Start3d(execptionptlist);
regional(xmn,xMx,ymn,yMx,pt,pt3,pt2,
xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4);
+ ConstantListC=[[50,50],[5000,1500,500,200],[0.00001,0.01,0.1]];
+ FuncListC=[];
+ CommandListC=[];
GCLIST=[];
GLIST=[];
FUNLIST=[];
@@ -97,7 +100,7 @@ Start3d(ptexception):=( //16.11.12
ErrFlag=0;
OBJCMD=[]; // 16.11.29from
OCNAME=Fhead;
- OCOPTION=["m","v"];// 16.11.29upto
+ OCOPTION=["m","v"];// 16.11.29until
ArrowlineNumber=1; // 16.01.31
ArrowheadNumber=1;
BezierNumber=1; //16.01.31
@@ -124,7 +127,7 @@ Start3d(ptexception):=( //16.11.12
+format((FI.x-xPos)*40,5)+")";
GLIST=append(GLIST,tmp);
THETA=(TH.x-xPos)*20*pi/180;
- PHI=(FI.x-xPos)*40*pi/180; // 16.06.20upto
+ PHI=(FI.x-xPos)*40*pi/180; // 16.06.20until
if(isselected(TH) % isselected(FI), // 17.05.18from
if(length(Ch)>0,
ChNum=Ch_(length(Ch));
@@ -133,7 +136,7 @@ Start3d(ptexception):=( //16.11.12
ChNum=1;
);
Ch=[0];
- );// 17.05.18upto
+ );// 17.05.18until
if(length(VLIST)==0, // 16.06.20
tmp=remove(allpoints(),[NE,SW,TH,FI,O,X,Y,Z]);//17.06.02
tmp4=remove(tmp,ptexception);
@@ -145,7 +148,7 @@ Start3d(ptexception):=( //16.11.12
pt3=Xyzcoord(pt.x,pt.y,tmp);
Defvar(tmp1+"3d",pt3);
pt2=Parapt(pt3); // 16.05.28from
- Defvar(tmp1+"2d",pt2); // 16.05.28upto
+ Defvar(tmp1+"2d",pt2); // 16.05.28until
);
);
,
@@ -199,7 +202,7 @@ Start3d(ptexception):=( //16.11.12
shadowc=[0,0,0,0.5]; mboxc="yellow"; //17.03.02 regional debugged
SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
letterc,mboxc,mboxc,mboxc,62,2,letterc];
- ThinDense=0.1; //17.07.01upto
+ ThinDense=0.1; //17.07.01until
Ptseg3data(ptexception); //16.08.23
);
@@ -231,7 +234,7 @@ Setangle(theta,phi):=( //16.12.24
pt3=Xyzcoord(pt.x,pt.y,tmp);
Defvar(tmp1+"3d",pt3);
pt2=Parapt(pt3); // 16.05.28from
- Defvar(tmp1+"2d",pt2); // 16.05.28upto
+ Defvar(tmp1+"2d",pt2); // 16.05.28until
);
);
,
@@ -554,7 +557,7 @@ Spaceline(Arg1,Arg2):=(
name="-"+replace(tmp,",","");
Spaceline(name,Arg1,Arg2);
);
-); // 16.02.22 upto
+); // 16.02.22 until
Spaceline(nm,ptlistorg,optionorg):=(
//help:Spaceline("1",[[2,5,1],[4,2,3]]);
//help:Spaceline([A,B]);
@@ -609,7 +612,7 @@ Spaceline(nm,ptlistorg,optionorg):=(
);
);
tmp=substring(tmp,0,length(tmp)-1)+"]";
- tmp=name3+"=Spaceline("+tmp+")"; //17.07.13upto
+ tmp=name3+"=Spaceline("+tmp+")"; //17.07.13until
// tmp=name3+"=Spaceline("+textformat(ptlist,5)+")"; //17.05.24
GLIST=append(GLIST,tmp);
tmp=name2+"=Projpara("+name3+")";
@@ -962,7 +965,7 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=(
);
);
);
- ); // 16.08.14upto
+ ); // 16.08.14until
tmp1=indexof(Xrange,"=");
tmp=parse(substring(Xrange,tmp1,length(Xrange)));
Px=[tmp_1,0,0]; Qx=[tmp_2,0,0];
@@ -1008,7 +1011,7 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=(
if(length(Origin)>0,
Letter([Parapt([0,0,0]),Origin,"O"]);
);
- ); // 16.08.14upto
+ ); // 16.08.14until
if(SUBSCR==1, // 15.02.11
Subgraph(name3,opcindy);
);
@@ -1722,11 +1725,11 @@ Putpoint3d(Arg1,Arg2,Arg3):=(
ptslist=Arg1;
fixstr=Arg2;
);
- if(islist(fixstr),fixstr=fixstr_1);// 16.03.02 upto
+ if(islist(fixstr),fixstr=fixstr_1);// 16.03.02 until
nn=length(ptslist)/2;
forall(1..nn,kk, // 16.08.19from
tmp1=ptslist_(2*kk-1);
- pt3=ptslist_(2*kk); // 16.08.19upto
+ pt3=ptslist_(2*kk); // 16.08.19until
VLIST=select(VLIST,#_1!=tmp1+"3d");
tmp2=parse(tmp1);
if(ispoint(tmp2), // 16.05.26from
@@ -1740,7 +1743,7 @@ Putpoint3d(Arg1,Arg2,Arg3):=(
Defvar(tmp1+"3d",tmp);
,
Defvar(tmp1+"3d",pt3);
- ); // 16.05.26upto
+ ); // 16.05.26until
Defvar(tmp1+"fix",0);
pt=Parapt(pt3);
Putpoint(tmp1,pt,parse(tmp1+".xy"));
@@ -1898,7 +1901,7 @@ Putaxes3d(size):=(
Putpoint3d(["Y",[0,sL_2,0]],"fix");
Putpoint3d(["Z",[0,0,sL_3]],"fix");
// Fixpoint3d(["O",[0,0,0]]);
-// Fixpoint3d(["X",[sL_1,0,0],"Y",[0,sL_2,0],"Z",[0,0,sL_3]]);//17.06.02fupto
+// Fixpoint3d(["X",[sL_1,0,0],"Y",[0,sL_2,0],"Z",[0,0,sL_3]]);//17.06.02funtil
);
IntersectsgpL(name,sgstr,pLstr):=
@@ -2103,7 +2106,7 @@ Putbezier3data(name,pt3Lorg,options):=( // 17.10.08 greatly changed
,
tmp1=name+numstr+"p";
tmp2=(pt3L_(nn-1)+pt3L_nn)/2;
- VLIST=select(VLIST,#_1!=tmp1+"3d"); // 16.08.19upto
+ VLIST=select(VLIST,#_1!=tmp1+"3d"); // 16.08.19until
Putpoint3d([tmp1,tmp2]);
ctrpts=append(ctrpts,tmp1);
);
@@ -2329,7 +2332,7 @@ Concatobj(objL,options):=(
);
);
vL=concat(vL,vadd);
- fL=concat(fL,fnew); // 16.02.11 upto
+ fL=concat(fL,fnew); // 16.02.11 until
);
tmp2=apply(1..length(fL),1);
if(rmf=="y",
@@ -2397,7 +2400,7 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=(
);
if(length(vfnL)==1,
vfnL=[vfnL_1,[1..length(vfnL_1)]];
- ); // 16.06.19upto
+ ); // 16.06.19until
tmp=Divoptions(options);
Noflg=tmp_2;
eqL=tmp_5;
@@ -2439,7 +2442,7 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=(
Putpoint3d(["v"+text(#),vtx],"fix");
);
);
- vL=append(vL,vname); // 16.02.10 upto
+ vL=append(vL,vname); // 16.02.10 until
);
eL=[];
forall(vfnL_2,face,
@@ -2590,7 +2593,7 @@ Phparadata(nm,nmvf,vfL,options):=(
tmp2=tmp2+text(#)+",";
);
tmp2=substring(tmp2,0,length(tmp2)-1)+")";
- ); // 2015.05.27 upto
+ ); // 2015.05.27 until
tmp=name3+"=Phparadata("+tmp1+","+tmp2+opstr+")";
GLIST=append(GLIST,tmp);
tmp=name2+"=Projpara("+name3+")";
@@ -2844,7 +2847,7 @@ Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=(
);
);
segL=tmp2;
- Changestyle3d(segL,["nodisp"]); // 16.02.29 upto
+ Changestyle3d(segL,["nodisp"]); // 16.02.29 until
if(islist(segL),
if(isstring(segL_1),
segL=apply(segL,parse(#));
@@ -2857,14 +2860,14 @@ Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=(
faceL=parse(facestr);
tmp=replace(facestr,"phf","phv"); // 16.02.10 from
tmp=parse(tmp);
- vtxL=apply(tmp,replace(#,"3d","")); // 16.02.10 upto
+ vtxL=apply(tmp,replace(#,"3d","")); // 16.02.10 until
flg=1;
,
faceL=parse(facestr);
);
);
if(flg==0,
- if(length(faceL)==2, // 16.08.19upto
+ if(length(faceL)==2, // 16.08.19until
vtxL=facestr_1;
faceL=facestr_2;
,
@@ -3220,22 +3223,23 @@ Sfbdparadata(nm,fd,options):=
Sfbdparadata(nm,fd,options,["nodisp"]);
Sfbdparadata(nm,fdorg,optionorg,optionsh):=(
//help:Sfbdparadata("1",Fd);
-//help:Sfbdparadata(options2=["Wait=30",limit1([0.05,1], limit2(0.2)]);
+//help:Sfbdparadata(options2=["Wait=60",division(c(50,50)),Eps1(c(0.01,1)), Eps2(0.05)]);
regional(fd,options,name2,name3,name2h,name3h,waiting,
- eqL,reL,strL,fname,outreg,tmp,tmp1,tmp2,flg,wflg);
+ eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg);
name2="sfbd2d"+nm;
name3="sfbd3d"+nm;
name2h="sfbdh2d"+nm;
name3h="sfbdh3d"+nm;
fname=Fhead+"sfbd"+nm+".txt";
- fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
options=optionorg;
tmp=Divoptions(options);
eqL=tmp_5;
reL=tmp_6;
strL=tmp_7;
- waiting=30;
- outreg=0; // 16.08.20
+ waiting=120;
forall(eqL,
tmp=indexof(#,"=");
tmp1=Toupper(substring(#,0,1));
@@ -3244,11 +3248,6 @@ Sfbdparadata(nm,fdorg,optionorg,optionsh):=(
waiting=parse(tmp2);
options=remove(options,[#]);
);
-// if(tmp1=="O", // 16.08.20
-// tmp=Toupper(substring(tmp2,0,1));
-// if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
-// options=remove(options,[#]);
-// );
);
options=remove(options,reL);
wflg=0;
@@ -3263,55 +3262,38 @@ Sfbdparadata(nm,fdorg,optionorg,optionsh):=(
options=remove(options,[#]);
);
);
- cmdL=MkprecommandS(5); // 16.02.01
- tmp=[
- Dq+fname+Dq,
- Dq+name3+Dq,name3,
- Dq+name2+Dq,name2,
- Dq+name3h+Dq,name3h,
- Dq+name2h+Dq,name2h,
- Dq+"HIDDENDATA"+Dq,"HIDDENDATA", // 16.08.20from
- Dq+"PARTITIONPT"+Dq,"PARTITIONPT",
- Dq+"OTHERPARTITION"+Dq,"OTHERPARTITION" // 16.08.20upto
- ];
- fd=apply(fd,replace(#,"_1","(1)")); // 16.05.25from
- fd=apply(fd,replace(#,"_2","(2)"));
- fd=apply(fd,replace(#,"_3","(3)")); // 16.05.25upto
- cmdL=concat(cmdL,[
- name3+"=Sfbdparadata",concat([fd,"Error"],reL),
+ tmp=["fd"+nm];
+ if(length(reL)>0,
+ reL=textformat(reL,4);
+ reL=substring(reL,1,length(reL)-1);
+ reL=Rsform(reL);
+ tmp=append(tmp,reL);
+ );
+ tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name2),name2];
+ tmp1=concat(tmp1,[Dqq(name3h),name3h,Dqq(name2h),name2h]);
+// tmp1=concat(tmp1,[Dqq("CUSPPT"),"CUSPPT"]);
+// tmp1=concat(tmp1,[Dqq("OTHERPARTITION"),"OTHERPARTITION"]);
+ tmp2=replace(fname,".txt",".dat"); //18.02.18
+ cmdL=[
+ "print",[Dqq("fd"+nm)], //18.02.22
+ "fd"+nm+"="+fd,[],
+ name3+"=Sfbdparadata",tmp,
name2+"=Projpara",[name3],
- name3h+"=BorderHiddenData()",[],
+ name3h+"=HIDDENDATA",[],
name2h+"=Projpara",[name3h],
- "function Ot=Hiddend(),global HIDDENDATA,Ot=HIDDENDATA,endfunction)"
- ,[], // 16.08.20from
- "function Ot=Otherp(),global OTHERPARTITION,Ot=OTHERPARTITION,endfunction)"
- ,[],
- "HIDDENDATA=Hiddend()",[],
- "PARTITIONPT=PartitionPt()",[],
- "OTHERPARTITION=Otherp()",[],
- "for J=1:length(OTHERPARTITION)",[],
- " Tmp1=OTHERPARTITION(J)",[],
- " Tmp2=[]",[],
- " for K=1:length(Tmp1)",[],
- " Tmp2=[Tmp2;Tmp1(K),1000]",[],
- " end",[],
- " OTHERPARTITION(J)=Tmp2",[],
- "end",[],
- "WriteOutData",tmp
- ]);
- options=append(options,"Wait="+text(waiting));
- if(wflg==1,options=concat(options,["m"])); // 16.08.20
- if(wflg==-1,options=concat(options,["r"]));
+ "WriteOutData",tmp1,
+ "save",["CUSPPT","OTHERPARTITION","file='"+tmp2+"'"]
+ ];
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
if(ErrFlag==0,
- CalcbyS("sfbd"+nm,cmdL,options);
+ CalcbyR("sfbd"+nm,cmdL,options);
);
if(ErrFlag==1,
err("Sfbdparadata not completed");
,
- if(outreg==1,
- OutFileList=remove(OutFileList,[fname]);
- OutFileList=append(OutFileList,fname);
- );
ReadOutData(fname);
if(islist(parse(name2)),
Extractdata(name2,options);
@@ -3323,32 +3305,48 @@ Sfbdparadata(nm,fdorg,optionorg,optionsh):=(
);
);
-Wireparadata(nm,out,wr1,wr2,fd):=
- Wireparadata(nm,out,fd,wr1,wr2,[],["nodisp"]);
-Wireparadata(nm,out,fd,wr1,wr2,options):=
- Wireparadata(nm,out,fd,wr1,wr2,options,["nodisp"]);
-Wireparadata(nm,outstr,fdorg,wr1,wr2,optionorg,optionsh):=(
+Addpoints():=(//18.02.20
+ if(isstring(ADDPOINT),
+ ADDPOINT;
+ ,
+ "list()";
+ );
+);
+Addpoints(ptlist):=(
+//help:Addpoints(list of 3d points);
+ if(length(ptlist)==0,
+ ADDPOINT="list()";
+ ,
+ ADDPOINT=Rsform(textformat(ptlist,6),2);
+ );
+ ADDPOINT;
+);
+
+Wireparadata(nm,sf,wr1,wr2,fd):=
+ Wireparadata(nm,sf,fd,wr1,wr2,[],["nodisp"]);
+Wireparadata(nm,sf,fd,wr1,wr2,options):=
+ Wireparadata(nm,sf,fd,wr1,wr2,options,["nodisp"]);
+Wireparadata(nm,sfstr,fdorg,wr1,wr2,optionorg,optionsh):=(
//help:Wireparadata("1","sfbd3d1",fd,5,5);
-//help:Wireparadata(options2=["Wait=40"]);
- regional(out,fd,options,name2,name3,name2h,name3h,outreg,
- eqL,reL,strL,fname,outfname,waiting,tmp,tmp1,tmp2,flg,wflg);
+//help:Wireparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]);
+ regional(fd,options,name2,name3,name2h,name3h,outreg,
+ eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,flg,wflg);
name2="wire2d"+nm;
name3="wiref3d"+nm;
name2h="wireh2d"+nm;
name3h="wireh3d"+nm;
fname=Fhead+"wire"+nm+".txt";
- tmp=replace(outstr,"3d","");
- outfname=Fhead+tmp+".txt"; // 16.08.20
- out=parse(outstr);
- if(!islist(out), ErrFlag=1);
- fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ rfname=Fhead+sfstr+".txt";
+ rfname=replace(rfname,"3d","");
+ tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
options=optionorg;
tmp=Divoptions(options);
eqL=tmp_5;
reL=tmp_6;
strL=tmp_7;
- waiting=40;
- outreg=0;
+ waiting=600;
forall(eqL,
tmp=indexof(#,"=");
tmp1=Toupper(substring(#,0,1));
@@ -3357,11 +3355,6 @@ Wireparadata(nm,outstr,fdorg,wr1,wr2,optionorg,optionsh):=(
waiting=parse(tmp2);
options=remove(options,[#]);
);
-// if(tmp1=="O", // 16.08.20from
-// tmp=Toupper(substring(tmp2,0,1));
-// if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
-// options=remove(options,[#]);
-// );// 16.08.20upto
);
options=remove(options,reL);
wflg=0;
@@ -3376,117 +3369,82 @@ Wireparadata(nm,outstr,fdorg,wr1,wr2,optionorg,optionsh):=(
options=remove(options,[#]);
);
);
- flg=0;
- tmp1=floor(5*1000/WaitUnit);
- repeat(tmp1,
- if(flg==0,
- tmp=load(Fhead+replace(outstr,"3d","")+".txt");
- if(length(tmp)>=4,
- tmp2=substring(tmp,length(tmp)-4,length(tmp));
- if(tmp2=="////",
- flg=1;
- );
- ,
- wait(WaitUnit);
- );
- );
- );
- if(flg==0,
- Err(outstr+" file not copleted");
- ErrFlag=1;
- );
- if(ErrFlag==0,
-// Writeoutdata(outfname,["Out",out]);
- );
- cmdL=MkprecommandS(5); // 16.02.01
- tmp=[
- Dq+fname+Dq,
- Dq+name3+Dq,name3,
- Dq+name2+Dq,name2,
- Dq+name3h+Dq,name3h,
- Dq+name2h+Dq,name2h
- ];
- fd=apply(fd,if(isstring(#),replace(#,"_1","(1)"),#)); // 16.05.25 08.17from
- fd=apply(fd,if(isstring(#),replace(#,"_2","(2)"),#));
- fd=apply(fd,if(isstring(#),replace(#,"_3","(3)"),#)); // 16.05.25 08.17upto
- cmdL=concat(cmdL,[
- "disp('Running Wireparadata')",[],
- "tmp=ReadOutData",[Dq+outfname+Dq],
- "execstr(tmp)",[],
- "function SetHidd(Dt),global HIDDENDATA,HIDDENDATA=Dt,endfunction)",
- [], // 16.08.20from
- "function SetPart(Dt),global PARTITIONPT,PARTITIONPT=Dt,endfunction)",
- [],
- "function SetOther(Dt),global OTHERPARTITION,OTHERPARTITION=Dt,endfunction)",
- [],
- "if type(HIDDENDATA)~=15,HIDDENDATA=list(HIDDENDATA),end",[],
- "if type(PARTITIONPT)~=15,PARTITIONPT=list(PARTITIONPT),end",[],
- "if type(OTHERPARTITION)~=15,OTHERPARTITION=list(OTHERPARTITION),end",[],
- "for J=1:length(OTHERPARTITION)",[],
- " Tmp=OTHERPARTITION(J)",[],
- " OTHERPARTITION(J)=Tmp(:,1)",[],
- "end",[],
- "SetHidd(HIDDENDATA)",[],
- "SetPart(PARTITIONPT)",[],
- "SetOther(OTHERPARTITION)",[],
- "if type("+outstr+")~=15,"+outstr+"=list("+outstr+"),end",[], // 16.08.20upto
- name3+"=Wireparadata",concat([outstr,fd,wr1,wr2,"Error"],reL),
+ tmp1=textformat(wr1,6);
+ tmp1=Rsform(tmp1,1);
+ tmp2=textformat(wr2,6);
+ tmp2=Rsform(tmp2,1);
+ tmp=[sfstr,"fd"+nm,tmp1,tmp2];
+ reL=RSform(text(reL),2);
+ reL=substring(reL,5,length(reL)-1);
+ if(length(reL)>0,
+ reL=textformat(reL,4);
+ reL=substring(reL,1,length(reL)-1);
+ reL=Rsform(reL);
+ tmp=append(tmp,reL);
+ );
+ tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name2),name2];
+ tmp1=concat(tmp1,[Dqq(name3h),name3h,Dqq(name2h),name2h]);
+ tmp2=replace(rfname,".txt",".dat");
+ cmdL=[
+ "print",[Dqq("wire"+nm)], //18.02.22
+ "fd"+nm+"="+fd,[],
+ "ReadOutData",[Dqq(rfname)],
+ "load",[Dqq(tmp2)],
+ "Addpoints",[Addpoints()],
+ name3+"=Wireparadata",tmp,
name2+"=Projpara",[name3],
- name3h+"=WireHiddenData()",[],
+ name3h+"=WIREHIDDENDATA",[],
name2h+"=Projpara",[name3h],
- "WriteOutData",tmp
- ]);
- options=append(options,"Wait="+text(waiting));
+ "WriteOutData",tmp1
+ ];
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
if(wflg==1,options=concat(options,["m"]));
if(wflg==-1,options=concat(options,["r"]));
if(ErrFlag==0,
- CalcbyS("wire"+nm,cmdL,options);
+ CalcbyR("wire"+nm,cmdL,options);
);
if(ErrFlag==1,
err("Wireparadata not completed");
,
- if(outreg==1,
-// OutFileList=remove(OutFileList,[fname]);
-// OutFileList=append(OutFileList,fname);
- );
ReadOutData(fname);
- if(!islist(parse(name2)), ErrFlag=1);
- if(ErrFlag==0,
+ if(islist(parse(name2)),
Extractdata(name2,options);
if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
Extractdata(name2h,tmp);
+ ,
+ ErrFlag=1;
);
);
);
-Crvsfparadata(nm,gd,out,fd):=
- Crvsfparadata(nm,gd,out,fd,[],["nodisp"]);
-Crvsfparadata(nm,gd,out,fd,options):=
- Crvsfparadata(nm,gd,out,fd,options,["nodisp"]);
-Crvsfparadata(nm,gdstr,outstr,fdorg,optionorg,optionsh):=(
+Crvsfparadata(nm,crv,sf,fd):=
+ Crvsfparadata(nm,crv,sf,fd,[],["nodisp"]);
+Crvsfparadata(nm,crv,sf,fd,options):=
+ Crvsfparadata(nm,crv,sf,fd,options,["nodisp"]);
+Crvsfparadata(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=(
//help:Crvsfparadata("1","ax3d","sfbd3d1",fd);
-//help:Crvsfparadata(options2=["Wait=20"]);
- regional(gd,out,fd,options,name2,name3,name2h,name3h,outreg,
- eqL,reL,strL,fname,gdfname,outfname,waiting,tmp,tmp1,tmp2,flg,wflg);
+//help:Crvsfparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]);
+ regional(gd,out,fd,options,name2,name3,name2h,name3h,
+ eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg);
+ tmp=replace(crvstr,"3d","2d");
+ Changestyle(tmp,["nodisp"]);
name2="crvsf2d"+nm;
name3="crvsf3d"+nm;
name2h="crvsfh2d"+nm;
name3h="crvsfh3d"+nm;
fname=Fhead+"crvsf"+nm+".txt";
- gdfname=Fhead+"crv"+nm+".txt";
- tmp=replace(outstr,"3d","");
- outfname=Fhead+tmp+".txt"; // 16.08.20
- gd=parse(gdstr);
- out=parse(outstr);
- if(!islist(out), ErrFlag=1);
- fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ rfname=Fhead+sfstr+".txt";
+ rfname=replace(rfname,"3d","");
+ tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
options=optionorg;
tmp=Divoptions(options);
eqL=tmp_5;
reL=tmp_6;
strL=tmp_7;
- waiting=20;
- outreg=1;
+ waiting=120;
forall(eqL,
tmp=indexof(#,"=");
tmp1=Toupper(substring(#,0,1));
@@ -3495,11 +3453,6 @@ Crvsfparadata(nm,gdstr,outstr,fdorg,optionorg,optionsh):=(
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,[#]);
-// );
);
options=remove(options,reL);
wflg=0;
@@ -3514,111 +3467,188 @@ Crvsfparadata(nm,gdstr,outstr,fdorg,optionorg,optionsh):=(
options=remove(options,[#]);
);
);
- flg=0;
- tmp1=floor(5*1000/WaitUnit);
- repeat(tmp1,
- if(flg==0,
- tmp=load(Fhead+replace(outstr,"3d","")+".txt");
- if(length(tmp)>=4,
- tmp2=substring(tmp,length(tmp)-4,length(tmp));
- if(tmp2=="////",
- flg=1;
- );
- ,
- wait(WaitUnit);
- );
- );
- );
- if(flg==0,
- Err(outstr+" file not copleted");
- ErrFlag=1;
- );
- if(wflg==0,
- tmp=load(fname);
- if(length(tmp)==0,wflg=1);
- );
- if(ErrFlag==0,
-// Writeoutdata(outfname,["Gc",gd,"Out",out]);
-// wait(WaitUnit);
- );
- cmdL=MkprecommandS(5); // 16.02.01
- tmp=[
- Dq+fname+Dq,
- Dq+name3+Dq,name3,
- Dq+name2+Dq,name2,
- Dq+name3h+Dq,name3h,
- Dq+name2h+Dq,name2h
+ reL=RSform(text(reL),2);
+ reL=substring(reL,5,length(reL)-1);
+ tmp=[crvstr,sfstr,"fd"+nm];
+ if(length(reL)>0,
+ reL=textformat(reL,4);
+ reL=substring(reL,1,length(reL)-1);
+ reL=Rsform(reL);
+ tmp=append(tmp,reL);
+ );
+ tmp1=[DqDq(fname),DqDq(name3),name3,DqDq(name2),name2];
+ tmp1=concat(tmp1,[DqDq(name3h),name3h,DqDq(name2h),name2h]);
+ tmp2=replace(rfname,".txt",".dat");
+ cmdL=[
+ "print",[Dqq("crv"+nm)], //18.02.22
+ "fd"+nm+"="+fd,[],
+ "ReadOutData",[Dqq(rfname)],
+ "load",[Dqq(tmp2)],
+ "Addpoints",[Addpoints()]
];
- fd=apply(fd,if(isstring(#),replace(#,"_1","(1)"),#)); // 16.05.25 08.17from
- fd=apply(fd,if(isstring(#),replace(#,"_2","(2)"),#));
- fd=apply(fd,if(isstring(#),replace(#,"_3","(3)"),#)); // 16.05.25 08.17upto
+ tmp3=select(GLIST,indexof(#,crvstr+"=")>0); //18.02.22from
+ if(length(tmp3)==0,
+ tmp3=Fhead+crvstr+".txt";
+ tmp3=replace(tmp3,"3d","");
+ cmdL=concat(cmdL,[
+ "ReadOutData",[Dqq(tmp3)]
+ ]);
+ ); //18.02.22until
cmdL=concat(cmdL,[
- "disp('Running Crvsfparadata')",[],
- "tmp=ReadOutData",[Dq+outfname+Dq],
- "execstr(tmp)",[],
- "function SetHidd(Dt),global HIDDENDATA,HIDDENDATA=Dt,endfunction)",
- [], // 16.08.20from
- "function SetPart(Dt),global PARTITIONPT,PARTITIONPT=Dt,endfunction)",
- [],
- "function SetOther(Dt),global OTHERPARTITION,OTHERPARTITION=Dt,endfunction)",
- [],
- "if type(HIDDENDATA)~=15,HIDDENDATA=list(HIDDENDATA),end",[],
- "if type(PARTITIONPT)~=15,PARTITIONPT=list(PARTITIONPT),end",[],
- "if type(OTHERPARTITION)~=15,OTHERPARTITION=list(OTHERPARTITION),end",[],
- "for J=1:length(OTHERPARTITION)",[],
- " Tmp=OTHERPARTITION(J)",[],
- " OTHERPARTITION(J)=Tmp(:,1)",[],
- "end",[],
- "SetHidd(HIDDENDATA)",[],
- "SetPart(PARTITIONPT)",[],
- "SetOther(OTHERPARTITION)",[],
- "if type("+outstr+")~=15,"+outstr+"=list("+outstr+"),end",[], // 16.08.20upto
- name3+"=Crvsfparadata",concat([gdstr,outstr,fd,"Error"],reL),
+ name3+"=Crvsfparadata",tmp,
name2+"=Projpara",[name3],
- name3h+"=CrvsfHiddenData()",[],
+ name3h+"=CRVSFHIDDENDATA",[],
name2h+"=Projpara",[name3h],
- "WriteOutData",tmp
+ "WriteOutData",tmp1
]);
- options=append(options,"Wait="+text(waiting));
- if(wflg==1,options=concat(options,["m"]));
- if(wflg==-1,options=concat(options,["r"]));
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
if(ErrFlag==0,
- CalcbyS("crvsf"+nm,cmdL,options);
+ CalcbyR("crvsf"+nm,cmdL,options);
);
if(ErrFlag==1,
err("Crvsfparadata not completed");
,
- if(outreg==1,
- OutFileList=remove(OutFileList,[fname]);
- OutFileList=append(OutFileList,fname);
+ ReadOutData(fname);
+ if(islist(parse(name2)),
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ ,
+ ErrFlag=1;
);
+ );
+);
+
+Crvonsfparadata(nm,crv2d,sf,fd):=
+ Crvsonfparadata(nm,crv2d,sf,fd,[],["nodisp"]);
+Crvonsfparadata(nm,crv2d,sf,fd,options):=
+ Crvonsfparadata(nm,crv2d,sf,fd,options,["nodisp"]);
+Crvonsfparadata(nm,crv2dstr,sfstr,fdorg,optionorg,optionsh):=(
+//help:Crvonsfparadata("1",["[1,t]","t=[0,2*pi]","Num=50"],"sfbd3d1",fd);
+//help:Crvonsfparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]);
+ regional(gd,out,fd,options,name2,name3,name2h,name3h,
+ eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg);
+ name2="crvonsf2d"+nm;
+ name3="crvonsf3d"+nm;
+ name2h="crvonsfh2d"+nm;
+ name3h="crvonsfh3d"+nm;
+ fname=Fhead+"crvonsf"+nm+".txt";
+ rfname=Fhead+sfstr+".txt";
+ rfname=replace(rfname,"3d","");
+ tmp=apply(fdorg,if(isstring(#),Dqq(#),#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=120;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ options=remove(options,reL);
+ 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,[#]);
+ );
+ );
+ if(isstring(crv2dstr),
+ crv=Rsform(crv2dstr);
+ ,
+ crv=apply(crv2dstr,Dqq(#));
+ crv=Rsform(text(crv));
+ crv="Paramplot"+substring(crv,1,length(crv));
+ );
+ reL=RSform(text(reL),2);
+ reL=substring(reL,5,length(reL)-1);
+ tmp=["crv",sfstr,"fd"+nm];
+ if(length(reL)>0,
+ reL=textformat(reL,4);
+ reL=substring(reL,1,length(reL)-1);
+ reL=Rsform(reL);
+ tmp=append(tmp,reL);
+ );
+ tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name2),name2];
+ tmp1=concat(tmp1,[Dqq(name3h),name3h,Dqq(name2h),name2h]);
+ tmp2=replace(rfname,".txt",".dat");
+ cmdL=[
+ "print",[Dqq("crvonsf"+nm)], //18.02.22
+ "fd"+nm+"="+fd,[],
+ "ReadOutData",[Dqq(rfname)],
+ "load",[Dqq(tmp2)],
+ "Addpoints",[Addpoints()],
+ "crv="+crv,[],
+ name3+"=Crvonsfparadata",tmp,
+ name2+"=Projpara",[name3],
+ name3h+"=HIDDENDATA",[],
+ name2h+"=Projpara",[name3h],
+ "WriteOutData",tmp1
+ ];
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
+ if(ErrFlag==0,
+ CalcbyR("crvonsf"+nm,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Crvonsfparadata not completed");
+ ,
ReadOutData(fname);
- tmp=replace(gdstr,"3d","2d");
- Changestyle([tmp],["nodisp"]);
- Extractdata(name2,options);
- if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
- Extractdata(name2h,tmp);
- );
-);
-
-Intersectcrvsf(nm,gd,fd):=
- Intersectcrvsf(nm,gd,fd,[]);
-Intersectcrvsf(nm,gdstr,fdorg,optionorg):=(
-//help:Intersectcrvsf("1",ax3d_1,fd);
-//help:Intersectcrvsf(options=["Wait=10",50,0.05]);
- regional(name,gd,fd,options,reL,fname,gdfname,
- waiting,tmp,tmp1,tmp2,flg,wflg,pts);
- name="intpts"+nm;
+ if(islist(parse(name2)),
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ ,
+ ErrFlag=1;
+ );
+ );
+);
+
+Intersectcrvsf(nm,crv,fd):=Intersectcrvsf(nm,crv,fd,"",[]);
+Intersectcrvsf(nm,crv,fd,Arg):=(
+ if(isstring(Arg),
+ Intersectcrvsf(nm,crv,fd,Arg,[]);
+ ,
+ Intersectcrvsf(nm,crv,fd,"",Arg);
+ );
+);
+Intersectcrvsf(nm,crvstr,fdorg,bdyeq,optionorg):=(
+//help:Intersectcrvsf("1",curve,fd);
+//help:Intersectcrvsf("1",curve,fd,curveequation);
+//help:Intersectcrvsf(options=[Np([50,50]),Eps(0.01)]);
+ regional(name,crv,fd,options,reL,fname,crvfname,argR,
+ waiting,tmp,tmp1,tmp2,flg,wflg,pts); name="crvsf"+nm;
+ name="crvsf"+nm;
fname=Fhead+name+".txt";
- gdfname=Fhead+"crv"+nm+".txt";
- gd=parse(gdstr);
- fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ crvfname=Fhead+"crv"+nm+".txt";
+// crv=parse(crvstr);
+// crv=textformat(crv,6);
+// crv=Rsform(crv,2);
+ fd=apply(fdorg,if(isstring(#),Dqq(#),#));
options=optionorg;
tmp=Divoptions(options);
eqL=tmp_5;
reL=tmp_6;
strL=tmp_7;
- waiting=10;
+ waiting=120;
forall(eqL,
tmp=indexof(#,"=");
tmp1=Toupper(substring(#,0,1));
@@ -3641,68 +3671,149 @@ Intersectcrvsf(nm,gdstr,fdorg,optionorg):=(
options=remove(options,[#]);
);
);
- if(wflg>-1,
- Writeoutdata(gdfname,["Gd",gd]);
-// wait(WaitUnit);
+ tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
+ tmp=textformat(reL,4);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp=Rsform(tmp);
+ if(length(bdyeq)>0,
+ argR=","+Dqq(bdyeq);
+ ,
+ argR="";
+ );
+ if(length(tmp)>0,
+ argR=argR+","+tmp;
);
- fd=apply(fd,replace(#,"_1","(1)")); // 16.05.25from
- fd=apply(fd,replace(#,"_2","(2)"));
- fd=apply(fd,replace(#,"_3","(3)")); // 16.05.25upto
+ tmp1=[Dqq(fname),Dqq(name),"tmp"];
cmdL=[
- "disp('Finding Intersectcrvsf')",[],
- "Setangle",[THETA,PHI]*180/pi,
- "tmp=ReadOutData",[Dq+gdfname+Dq],
- "execstr(tmp)",[],
- "Intpts=Intersectcrvsf",concat(["Gd",fd,"Error"],reL),
- "tmp1='['",[],
- "for J=1:length(Intpts)",[],
- " tmp2=Intpts(J)",[],
- " for K=1:length(tmp2)",[],
- " if K==1",[],
- " tmp1=tmp1+'['",[],
- " end",[],
- " tmp1=tmp1+string(tmp2(K))",[],
- " if K<length(tmp2)",[],
- " tmp1=tmp1+','",[],
- " else",[],
- " tmp1=tmp1+']'",[],
- " end",[],
- " end",[],
- " if J<length(Intpts)",[],
- " tmp1=tmp1+','",[],
- " else",[],
- " tmp1=tmp1+']||||'",[], //16.08.09
- " end",[],
- "end",[],
- "fid=mopen('"+fname+"','w')",[],
- " mputl(tmp1,fid)",[],
- "mclose(fid)",[]
+ "print",[Dqq("crvsf"+nm)], //18.02.22
+ "crv="+crvstr,[],
+ "fd="+fd,[],
+ "tmp1=Intersectcrvsf(crv,fd"+argR+")",[],
+ "tmp=c()",[],
+ "for(j in Looprange(1,length(tmp1))){",[],
+ " tmp=Appendrow(tmp,tmp1[[j]])",[],
+ "}",[],
+ "WriteOutData",tmp1,
+ "tmp",[]
];
- options=append(options,"Wait="+text(waiting));
- if(wflg==1,options=concat(options,["m"]));
- if(wflg==-1,options=concat(options,["r"]));
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
+ if(ErrFlag==1,
+ err("Crvsfparadata not completed");
+ ,
+ CalcbyR("ans",cmdL,options);
+ ReadOutData(fname);
+ );
+ println("generate "+name);
+ parse(name);
+);
+
+Sfcutparadata(nm,eqstr,sf,fd):=
+ Sfcutparadata(nm,eqstr,sf,fd,[]);
+Sfcutparadata(nm,eqstr,sf,fd,options):=
+ Sfcutparadata(nm,eqstr,sf,fd,options,["nodisp"]);
+Sfcutparadata(nm,eqstr,sf,fdorg,optionorg,optionsh):=(
+//help:Sfcutparadata("1","x+y+z=1","sfbd3d1",fd,"x+y+z=1");
+//help:Sfcutparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]);
+ regional(gd,out,fd,options,name2,name3,name2h,name3h,
+ eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg);
+ tmp=replace(sfcut,"3d","2d");
+ Changestyle(tmp,["nodisp"]);
+ name2="sfcut2d"+nm;
+ name3="sfcut3d"+nm;
+ name2h="sfcuth2d"+nm;
+ name3h="sfcuth3d"+nm;
+ fname=Fhead+"sfcut"+nm+".txt";
+ rfname=Fhead+sf+".txt";
+ rfname=replace(rfname,"3d","");
+ tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ tmp=text(tmp);
+ fd=RSform(tmp,2);
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=120;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ options=remove(options,reL);
+ 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,[#]);
+ );
+ );
+ reL=RSform(text(reL),2);
+ reL=substring(reL,5,length(reL)-1);
+ tmp=[Dqq(eqstr),sf,"fd"+nm];
+ if(length(reL)>0,
+ reL=textformat(reL,4);
+ reL=substring(reL,1,length(reL)-1);
+ reL=Rsform(reL);
+ tmp=append(tmp,reL);
+ );
+ tmp1=[DqDq(fname),DqDq(name3),name3,DqDq(name2),name2];
+ tmp1=concat(tmp1,[DqDq(name3h),name3h,DqDq(name2h),name2h]);
+ tmp2=replace(rfname,".txt",".dat");
+ cmdL=[
+ "print",[Dqq("sfcut"+nm)], //18.02.22
+ "fd"+nm+"="+fd,[],
+ "ReadOutData",[Dqq(rfname)],
+ "load",[Dqq(tmp2)],
+ name3+"=Sfcutparadata",tmp,
+ name2+"=Projpara",[name3],
+ name3h+"=CRVONSFHIDDENDATA",[],
+ name2h+"=Projpara",[name3h],
+ "WriteOutData",tmp1
+ ];
+ tmp=replace(fname,".txt","end.txt");
+ options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
if(ErrFlag==0,
- CalcbyS(name,cmdL,options); // 16.08.14
+ CalcbyR("sfcut"+nm,cmdL,options);
);
if(ErrFlag==1,
- err("Intersectcrvsf not completed");
+ err("Sfcutparadata not completed");
,
- println(name+" obtained"); //16.08.14from
- pts=load(fname);
- pts=replace(pts,"||||","");
- tmp=name+"="+pts;
- parse(tmp);
- parse(pts); //16.08.14upto
+ ReadOutData(fname);
+ if(islist(parse(name2)),
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ ,
+ 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);
+
+
+////////////// new skeleton 2018.01.04 not completed and slow////////////////
+
Skeletondatacindy(nm):=Skeletondatacindy(nm,[]);
Skeletondatacindy(nm,options):=(
regional(tmp);
@@ -3791,10 +3902,9 @@ Makeskeletondata(ObjL,PltL,R0):=(
remov=[];
obj2=Projcurve(obj);
forall(1..(length(PltL)),nn,
-
plt=PltL_nn;
tmp=Projcurve(plt);
- koc=Intersectcurves(obj2,tmp);
+ koc=IntersectcurvesPp(obj2,tmp);
forall(1..(length(koc)),kk,
ptk=koc_kk;
tmp=PointonCurve(ptk_2,obj);
@@ -3894,7 +4004,363 @@ Makeskeletondata(ObjL,PltL,R0):=(
Allres;
);
-////////////// new skeleton 2018.01.04upto ////////////////
+////////////// current skeleton 2018.01.04 ////////////////
+
+Skeletondatacindy(nm):=Skeletondatacindy(nm,[]);
+Skeletondatacindy(nm,options):=(
+ regional(tmp);
+ tmp=Datalist3d();
+ Skeletondatacindy(nm,tmp,tmp,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)]);
+ regional(Eps,Eps2,name2,name3,Ltype,Noflg,reL,opcindy,
+ Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data,
+ Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2);
+ name2="sk2d"+nm;
+ name3="sk3d"+nm;
+ pltdata1=[];// 16.01.31
+ forall(pltdata1org,tmp1,
+ tmp=parse(tmp1);
+ pltdata1=append(pltdata1,tmp);
+ );
+ pltdata2=[];// 16.01.31
+ forall(pltdata2org,tmp1,
+ tmp=parse(tmp1);
+ pltdata2=append(pltdata2,tmp);
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6; //16.02.28
+ opcindy=tmp_9;
+ Rr=0.075*1000/2.54/MilliIn;
+ size=1;
+ Eps2=0.05;
+ if(length(reL)>0, //16.02.28
+ size=reL_1;
+ Rr=size*Rr;
+ if(length(reL)>1,Eps2=reL_2);
+ );
+ 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
+ tmp1=apply(Out,textformat(#,5));
+ tmp=name3+"="+tmp1;
+ parse(tmp);
+ tmp=name2+"=Projcurve("+tmp1+");";
+ parse(tmp);
+ Changestyle3d(pltdata1org,["nodisp"]);
+ if(Noflg<3,
+ println("generate skeleton :"+name3);
+ tmp1=text(pltdata1org);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=text(pltdata2org);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ tmp=name3+"=Skeletonpara3data("+tmp1+","+tmp2+",";
+ tmp=tmp+text(size)+")";
+ GLIST=append(GLIST,tmp);
+ 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);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1,
+ Subgraph(name3,opcindy);
+ );
+ );
+ 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);
+ 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);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ 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;
+ );
+ );
+ );
+ 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(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;
+ ,
+ t2=t2-hh;
+ );
+ );
+ );
+ 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(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);
+ );
+ );
+ );
+ );
+ );
+ Res;
+);
+
+////////////////// end of current skeleton//////////////
ProjcoordCurve(Curve):=(
regional(SP,CP,ST,CT,Out,jj,pt,x,y,z,xz,yz,zz);