summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html')
-rw-r--r--texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html6502
1 files changed, 0 insertions, 6502 deletions
diff --git a/texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html b/texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html
deleted file mode 100644
index 53b5c9a0..00000000
--- a/texmf-dist/doc/support/ketcindy/ketsample/samplesJS/js02diffeq2ketcindy.html
+++ /dev/null
@@ -1,6502 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="UTF-8">
-
- <title>js02diffeq2.cdy</title>
- <style type="text/css">
- * {
- margin: 0px;
- padding: 0px;
- }
-
- #CSConsole {
- background-color: #FAFAFA;
- border-top: 1px solid #333333;
- bottom: 0px;
- height: 200px;
- overflow-y: scroll;
- position: fixed;
- width: 100%;
- }
- </style>
- <link rel="stylesheet" href="http://cindyjs.org/dist/v0.8/CindyJS.css">
- <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/Cindy.js"></script>
- <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/KetCindyPlugin.js"></script>
-<script id="csdraw" type="text/x-cindyscript">
-Fhead="s210diffeq2";
-Texparent="";
-
-Ketinit();
-Changework(Dirhead+"/ketsample/samplesJS");
-
-//Deqplot("1","y`=y","x",0,1);
-Deqplot("2","y``=-L.x*y`-G.x*y","t=[0,XMAX]",0,[C.y,0],["Num=200"]);
-//Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",0,A,["Num=200"]);
-
-Expr([M,"e","\displaystyle\frac{d^2 x}{dt^2}+"+L.x+"\frac{dx}{dt}+"+G.x+"x=0"]);
-
-Windispg();
-
-//Help("De");
-
-;
-</script>
-<script id="csinit" type="text/x-cindyscript">
-Ketinit():=Ketinit(1);
-Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
-Ketinit(sy,rangex,rangey):=(
- regional(pt,tmp,tmp1,tmp2);
- PenThickInit=8;
- ULEN="1cm";
- KETPICLAYER=20;
- MilliIn=1/2.54*1000;
- PenThick=round(MilliIn*0.02);
- PenThickInit=PenThick;
- TenSizeInit=0.02;
- TenSize=TenSizeInit;
- YaSize=1; YaAngle=18; YaPosition=1;
- YaThick=1; YaStyle='tf';
- KETPICCOUNT=1;
- KCOLOR=[0,0,0];
- GLIST=[];
- GCLIST=[];
-// GDATALIST=[];
- GOUTLIST=[];
- POUTLIST=[];
- VLIST=[];
- FUNLIST=[];
- LETTERlist=[];
- COM0thlist=[];
- COM1stlist=[];
- COM2ndlist=[];
- SCIWRLIST=[];
- SCIRELIST=[];
- ADDAXES="1";
- LFmark=unicode("000a");
- Dq=unicode("0022");
- WaitUnit=10;
- CONTINUED=0;
- OutComList=[];
- OutFileLIst=[]; // 15.10.22
- FigPdfList=[]; // 16.04.08
- ADDPACK=[]; // 16.05.16
- ErrFlag=0;
- setdirectory(Dirwork);
- if(isstring(Fhead), // 15.04.06
- Fnametex=Fhead+".tex";
- Fnamesci=Fhead+".sce";
- Fnamescibody=Fhead+"body.sce";
- Fnameout=Fhead+".txt";
- );
- if(!isstring(Mackc),// 16.06.07
- Mackc="sh";
- );
- ArrowlineNumber=1; // 15.01.05
- ArrowheadNumber=1;
- BezierNumber=1; //15.01.03
- SCALEX=1;
- SCALEY=sy;
-// Setscaling(sy);
- XMIN=rangex_1/SCALEX;
- XMAX=rangex_2/SCALEX;
- YMIN=rangey_1/SCALEY;
- YMAX=rangey_2/SCALEY;
- Setwindow("Msg=n"); // 16.05.31
-);
-
-DqDq(str):=unicode("0022")+str+unicode("0022");
-
-Tab2list(dtstr):=Tab2list(dtstr,[]);
-Tab2list(dtstr,options):=(
-//help:Tab2list(datastr);
-//help:Tab2list(options=[0]);
- regional(dtall,dt,rep,out,crm,lfm,htm,first,tmp,tmp1,tmp2);
- crm=unicode("000d");
- lfm=unicode("000a");
- htm=unicode("0009");
- rep=0;
- if(length(options)>0,rep=options_1);
- first=lfm; // 16.09.05from
- if(indexof(dtstr,crm)>0,
- first=crm;
- if(indexof(dtstr,crm+lfm)>0,
- first=first+lfm;
- ); // 16.09.05upto
- );
- tmp1=Indexall(dtstr,first);
- tmp1=prepend(0,tmp1);
- tmp1=append(tmp1,length(dtstr));
- dtall=[];
- forall(1..(length(tmp1)-1),
- tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
- if(length(tmp)>0,
- dtall=append(dtall,tmp);
- );
- );
- out=[];
- forall(dtall,dt,
- tmp1=tokenize(dt,unicode("0009"));
- tmp2=[];
- forall(tmp1,
- if(isstring(#),tmp=parse(#),tmp=#);
- if(!isreal(tmp),
- if(length(#)>0,tmp=#,tmp=rep);
- );
- tmp2=append(tmp2,tmp);
- );
- out=append(out,tmp2);
- );
- out;
-);
-
-Columnlist(dt,list):=( // 16.09.04
-//help:Columnlist(dt,1..3);
- apply(dt,#_list);
-);
-
-Dispmat(dt):=( // 16.09.16
-//help:Dispmat(dt);
- regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
- htm=unicode("0009");
- crm=unicode("000d");
- lfm=unicode("000a");
- tmp2="";
- forall(dt,row,
- tmp1="";
- forall(row,
- if(isstring(#),
- tmp1=tmp1+#+htm;
- ,
- tmp1=tmp1+text(#)+htm;
- );
- );
- tmp1=substring(tmp1,0,length(tmp1)-1);
- tmp1=tmp1+lfm;
- tmp2=tmp2+tmp1;
- );
- print(tmp2);
- println();
-);
-
-norm(v1):=( // 16.09.01
-//help:norm([2,1,3]);
- regional(out,tmp,tmp1,tmp2);
- out=0;
- forall(1..length(v1),
- out=out+(v1_#)^2;
- );
- out=sqrt(out);
- out;
-);
-norm(v1,v2):=(
- norm(v2-v1);
-);
-
-// 16.03.28
-Removespace(str):=(
-//help:Removespace(" a b c ");
- regional(tmp,flg,out);
- tmp=length(str)+1;
- flg=0;
- forall(1..length(str),
- if(flg==0,
- if((str_#)!=" ",
- tmp=#;
- flg=1;
- );
- );
- );
- out=substring(str,tmp-1,length(str));
- flg=0;
- tmp=0;
- forall(reverse(1..length(out)),
- if(flg==0,
- if((out_#)!=" ",
- tmp=#;
- flg=1;
- );
- );
- );
- out=substring(out,0,tmp);
-);
-
-Indexall(str,key):=(
- regional(rest,out,flg,tmp,tmp1,);
- out=[];
- rest=str;
- flg=0;
- forall(1..length(str),
- if(flg==0,
- tmp=indexof(rest,key);
- if(tmp>0,
- tmp1=tmp+length(str)-length(rest);
- out=append(out,tmp1);
- rest=substring(rest,tmp,length(rest));
- ,
- flg=1;
- );
- );
- );
- out;
-);
-
-Changework(path):=(
-//help:Changework(directory);
- regional(tmp); // 16.04.23from
- Dirwork=path;
- setdirectory(Dirwork); // 16.04.23
- if(ismacosx(),
- if(!iskcexists(Dirwork), // 16.06.07from
- SCEOUTPUT = openfile("kc.sh");
- println(SCEOUTPUT,"#!/bin/sh");
-// if(!isstring(Dq),Dq=unicode("0022")); // 18.07.30
- println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
- println(SCEOUTPUT,"chmod +x kc.sh");
- println(SCEOUTPUT,"exit 0");
- closefile(SCEOUTPUT);
- println(kc(Dirwork+"/kc.sh",Dirlib,Fnametex)); // 16.07.23
- ); // 16.06.07upto
- );
-);
-
-Changestyle(nameL,style):=(
-//help:Changestyle(["sgAB"],["da"]);
- regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
- tmp=Divoptions(style);
- Ltypeorg=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- if(islist(nameL),nmL=nameL,nmL=[nameL]);
- forall(nmL,name,
- Ltype=Ltypeorg;
- GCLIST=select(GCLIST,#_1!=name);
- COM2ndlist=select(COM2ndlist,indexof(#,"("+name)==0); // 15.05.23
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- );
-);
-
-Op(n,object):=( // 16.05.25
-//help:Op(4,[1,2,3,4]);
-//help:Op(3,"abcd");
- regional(out);
- if(islist(object),
- out=object_n;
- ,
- if(isstring(object),
- out=substring(object,n-1,n);
- );
- );
- out;
-);
-
-Toupper(str):=(
- regional(alphabet,out,tmp,tmp1);
- alphabet="abcdefghijklmnopqrstuvwxyz";
- out="";
- forall(1..length(str),
- tmp=substring(str,#-1,#);
- tmp1=indexof(alphabet,tmp);
- if(tmp1>0,
- out=out+unicode(text(tmp1+64),base->10);
- ,
- out=out+tmp;
- );
- );
- out;
-);
-
-Textformat(value,dig):=(
-//help:Textformat(2/3,4);
-//help:Textformat([gr1,gr2],5);
- regional(vv,tmp,tmp1);
- if(islist(value),
- tmp1="[";
- forall(value,
- tmp1=tmp1+Textformat(#,dig)+",";
- );
- tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
- ,
- if(ispoint(value) % isstring(value),
-// vv=Lcrd(value);
-// tmp1=Textformat(vv,dig);
-// tmp1=text(value); // 15.04.07
- if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
- ,
- tmp1=format(value,dig);
- );
- );
- tmp1;
-);
-
-Sprintf(value,dig):=(
-//help:Sprintf(5.1,4);
- regional(vv,tmp,tmp1);
- if(!islist(value),
- vv=Textformat(value,dig);
- if(indexof(vv,".")==0,vv=vv+".");
- vv=vv+"0000000000000000";
- tmp=indexof(vv,".")+dig;
- vv=substring(vv,0,tmp);
- ,
- vv=apply(value,Sprintf(#,dig));
- );
- vv;
-);
-
-Assign(funstr,vrL):=(
- regional(nn,out,tmp,tmp1);
- nn=length(vrL)/2;
- out=funstr;
- forall(1..nn,
- out=Assign(out,vrL_(2*#-1),vrL_(2*#));
- );
- out;
-);
-
-Assign(funstr,varname,rep):=(
-//help:Assign("x^2+a*x","a",1.3);
-//help:Assign("a*x^2+b*x",["a",1,"b",2]);
- regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
- if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,5)+")"); // 15.02.09, 07.06
- tmp=[46]; // 12.20
- tmp=concat(tmp,48..57);
- tmp=concat(tmp,65..90);
- tmp=concat(tmp,97..122);
- Notvar=apply(tmp,unicode(text(#),base->10));
- tmp2="";
- forall(1..100,
- ii=indexof(funstr,varname);
- if(ii>0,
- Flg=0;
- if(ii>1,
- tmp=substring(funstr,ii-2,ii-1);
- if(contains(Notvar,tmp),
- tmp2=tmp2+substring(funstr,0,ii);
- funstr=substring(funstr,ii,length(funstr));
- Flg=1;
- );
- );
- if(Flg==0,
- jj=ii-1+length(varname);
- if(jj<length(funstr),
- tmp=substring(funstr,jj,jj+1));
- if(contains(Notvar,tmp),
- tmp2=tmp2+substring(funstr,0,jj);
- funstr=substring(funstr,jj,length(funstr));
- Flg=1;
- );
- );
- if(Flg==0,
- tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
- funstr=substring(funstr,jj,length(funstr));
- );
- );
- );
- funstr=tmp2+funstr;
- funstr;
-);
-
-MeasureDepth(list):=(
- regional(tmp,Depth,Flg);
- Flg=0;
- Depth=0;
- if(ispoint(list), // 15.01.22
- Depth=0;
- Flg=1;
- ,
- tmp=list_1;
- );
- repeat(4,
- if(Flg==0,
- if(islist(tmp),
- tmp=tmp_1;
- Depth=Depth+1;
- ,
- if(ispoint(tmp),Depth=Depth+1);
- Flg=1;
- );
- );
- );
- Depth;
-);
-
-Flattenlist(pltlist):=(
-//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
- regional(Out,nn,Dt,ii,tmp,flg);
- Out=[];
- if(MeasureDepth(pltlist)==1,
- Out=[pltlist];
- ,
- forall(1..length(pltlist),nn,
- Dt=pltlist_nn;
- if(MeasureDepth(Dt)<2,
- Out=append(Out,Dt);
- ,
- forall(1..length(Dt),ii,
- tmp=Flattenlist(Dt_ii);
- Out=concat(Out,tmp);
- );
- );
- );
- );
- Out;
-);
-
-Divoptions(options):=(
-//help:Divoptions(options);
- regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
- Ltype="dr"; // 2015.01.13
- Noflg=0;
- Inflg=0;
- Outflg=0;
- eqL=[];
- realL=[];
- strL=[];
- opstr="";
- opcindy="";
- forall(options,
- flg=0;
- if(flg==0,
- if(isreal(#) % ispoint(#) % islist(#),
- realL=append(realL,#);
- opstr=opstr+","+text(#);
- flg=1;
- );
- );
- if(flg==0,
- if(indexof(#,"=")>0,
- eqL=append(eqL,#);
- flg=1;
- );
- );
- if(flg==0,
- if(indexof(#,"no")+indexof(#,"No")>0,
- if(indexof(#,"tex")>0,Noflg=1);
- if(indexof(#,"disp")>0,Noflg=2);
- if(indexof(#,"data")>0,Noflg=3);
- flg=1;
- );
- );
- if(flg==0,
- if(indexof(#,"->")>0,
- opcindy=opcindy+","+#;
- flg=1;
- );
- );
- if(flg==0,
- if(indexof(#,"out")+indexof(#,"Out")>0,
- if(indexof(#,"-")==0,
- Outflg=1;
- ,
- Outflg=2;
- );
- flg=1;
- );
- );
- if(flg==0,
- if(indexof(#,"in")+indexof(#,"In")>0,
- if(indexof(#,"-")==0,
- Inflg=1;
- ,
- Inflg=2;
- );
- flg=1;
- );
- );
- if(flg==0,
- tmp=substring(#,0,2);
- tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
- tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
- tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
- tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
- tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
- if(tmp1>0,
- Ltype=#;
- flg=1;
- );
- if(flg==0,
- strL=append(strL,#);
- opstr=opstr+","+Dq+#+Dq;
- );
- );
- );
- if(indexof(opcindy,"color->")==0,// 16.10.07from
- opcindy=opcindy+",color->[0,0,0]";
- );
- [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
-);
-
-Dotprod(vec1,vec2):=(
-//help:Dotprod(vec1,vec2);
- regional(v1,v2,tmp);
- if(ispoint(vec1),v1=vec1.xy,v1=vec1);
- if(ispoint(vec2),v2=vec2.xy,v2=vec2);
- v1*v2;
-);
-
-Crossprod(a,b):=(
-//help:Crossprod(vec1,vec2);
- regional(tmp1,tmp2,tmp3,Out);
- if(length(a)==3,
- tmp1=a_2*b_3-a_3*b_2;
- tmp2=a_3*b_1-a_1*b_3;
- tmp3=a_1*b_2-a_2*b_1;
- Out=[tmp1,tmp2,tmp3];
- ,
- Out=a_1*b_2-a_2*b_1;
- );
- Out;
-);
-
-Ptstart(Fig):=(
-//help:Ptstart("gr1");
- regional(tmp);
- if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
- tmp_1;
-);
-
-Ptend(Fig):=(
-//help:Ptend("gr1");
- regional(tmp);
- if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
- tmp_(length(tmp)); // 15.04.12
-);
-
-Numptcrv(Fig):=(
-//help:Numptcrv("gr1");
- regional(tmp);
- if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
- length(tmp);
-);
-
-Ptcrv(Num,Fig):=(
-//help:Ptcrv(10,"gr1");
- regional(tmp);
- if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
- tmp_Num;
-);
-
-Invert(Fig):=(
-//help:Invert("gr1");
- regional(tmp);
- if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
- reverse(tmp);
-);
-Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
-Invert(nm,Fig,options):=(
-//help:Invert("1","gr1");
- regional(name,tmp);
- name="-inv"+nm;
- tmp=Invert(Fig);
- Listplot(name,tmp,options);
-);// upto 16.01.27
-
-Paramoncrv(pP,Gdata):=(
- regional(Tmp,PtL);
-// Eps=10^(-8);
- if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
- Tmp=Nearestpt(pP,PtL);
- Tmp_2;
-);
-
-ParamonCurve(pP,nN,plist):=(
-//help:ParamonCurve(A,10,"gr1");
- regional(PtL,Out,Pa,Pb,vV,vW,sS);
- if(isstring(plist),PtL=parse(plist),PtL=plist);
- if(nN==length(PtL),
- Out=nN;
- ,
- Pa=PtL_nN;
- Pb=PtL_(nN+1);
- vV=Pb-Pa;
- vW=pP-Pa;
- sS=vV*vW/|vV|^2;
- sS=min([max([sS,0]),1]);
- Out=nN+sS;
- );
- Out;
-);
-
-Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
-PointonCurve(tT,Gdata):=(
-//help:PointonCurve(20.5,"gr1");
- regional(Out,Eps,nN,sS,Pa,Pb,PtL);
- if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
- if(length(PtL)==1,PtL=PtL_1);
- Eps=10^(-4);
- nN=floor(tT+Eps);
- sS=max([tT-nN,0]);
- if(nN==length(PtL),
- Out=PtL_nN;
- ,
- Pa=PtL_nN;
- Pb=PtL_(nN+1);
- Out=(1-sS)*Pa+sS*Pb;
- );
- Out;
-);
-
-Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
-Koutenseg(pA,pB,pC,pD,options):=(
- regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
- em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
- Eps0=10^(-4);
- pV=pB-pA;
- Sv2=|pV|;
- pP=pC-pA; pQ=pD-pA;
- Eps=10^(-3);
- Eps2=0.2;
- Tmp1=0;
- forall(options,
- if(Tmp1==0,
- Eps=#;
- Tmp1=1;
- ,
- Eps2=#;
- );
- );
- Flg=0;
- if(Sv2<10^(-3),
- Out=["inf","inf"];
- Flg=1;
- );
- if(Flg==0,
- Eps=min([Eps2,Eps/Sv2]);
- p1=pP*pV/Sv2^2;
- p2=[pP_2,-pP_1]*pV/Sv2^2;
- q1=pQ*pV/Sv2^2;
- q2=[pQ_2,-pQ_1]*pV/Sv2^2;
- em1=-Eps; eM1=1+Eps;
- em2=-Eps; eM2=Eps;
- if(max([p1,q1])<em1 % min([p1,q1])>eM1,
- Out=["inf","inf"];
- Flg=1;
- );
- if(max([p2,q2])<em2 % min([p2,q2])>eM2,
- Out=["inf","inf"];
- Flg=1;
- );
- );
- if(Flg==0 & p2*q2<0,
- rT=p1-(q1-p1)/(q2-p2)*p2;
- if(rT>em1 & rT<eM1,
- if(rT>-Eps0 & rT<1+Eps0,
- Tmp1=pA+rT*pV;
- Tmp2=min([max([rT,0]),1]);
- Out=[Tmp1,Tmp2,0];
- ,
- Tmp1=pA+rT*pV;
- Tmp2=min([max([rT,0]),1]);
- Out=[Tmp1,Tmp2,1];
- );
- Flg=1;
- );
- if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
- if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
- Out=["inf","inf"];
- Flg=1;
- );
- if(Flg==0,
- rT=min([max([p1,0]),1]);
- Tmp1=pA+rT*pV;
- Out=[Tmp1,rT,1];
- Flg=1;
- );
- );
- );
- if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
- rT= p1;
- Tmp1=pA+rT*pV;
- Out= [Tmp1, rT, 0];
- Flg=1;
- );
- if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
- rT= q1;
- Tmp1=pA+rT*pV;
- Out=[Tmp1,rT,0];
- Flg=1;
- );
- if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
- if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
- Out=["inf","inf"];
- Flg=1;
- );
- if(Flg==0,
- rT=min([max([q1,0]),1]);
- Tmp1=pA+rT*pV;
- Out=[Tmp1,rT,1];
- Flg=1;
- );
- );
- if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
- rT=min([max([p1,0]),1]);
- Tmp1=pA+rT*pV;
- Out=[Tmp1,rT,1];
- Flg=1;
- );
- if(Flg==0,
- if(abs(p2)<abs(q2),
- rT=min([max([p1,0]),1]);
- ,
- rT=min([max([q1,0]),1]);
- );
- Tmp1=pA+rT*pV;
- Out=[Tmp1,rT,1];
- );
- Out;
-);
-
-IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
-IntersectcrvsPp(Gr1,Gr2,options):=(
-//help:IntersectcrvsPp("gr1","pa1");
- regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
- Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
- pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
- Eps=10^(-4);
- Eps2=0.1;
- Dif=0.05; // 2015.05.31
- Flg=0;
- Tmp1=Divoptions(options); //
- eqL=Tmp1_5;
- realL=Tmp1_6;
- opstr=Tmp1_(length(Tmp1));
- forall(eqL,
- if(substring(#,0,1)=="D",
- Tmp1=indexof(#,"=");
- Dif=parse(substring(#,Tmp1,length(#)));
- );
- );
- Tmp1=length(realL);
- if(Tmp1>0,
- Eps=realL_1;
- if(Tmp1>1,
- Eps2=realL_2;
- );
- );
- Flg=0;
- if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
- if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
- if(MeasureDepth(Data1)==2,Data1=Data1_1);
- if(MeasureDepth(Data2)==2,Data2=Data2_1);
- Data1=apply(Data1,LLcrd(#));
- Data2=apply(Data2,LLcrd(#));
- if(length(Data1)==length(Data2),
- Tmp1=Reverse(Data2);
- Eps0=10^(-6);
- Tmp2=0;
- forall(1..length(Data1),
- Tmp2=Tmp2+abs(Data1_#-Data2_#);
- );
- Tmp3=0;
- forall(1..length(Data1),
- Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
- );
- if(Tmp2<Eps0 % Tmp3<Eps0,
- Out=[];
- Flg=1;
- );
- );
- if(Flg==0,
- KL1=[];
- KL2=[];
- forall(1..(length(Data1)-1),Ni,
- pA=Data1_Ni;
- pB=Data1_(Ni+1);
- forall(1..(length(Data2)-1),
- pP=Data2_#; pQ=Data2_(#+1);
- Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
- if(Tmp!=["inf","inf"],
- if(Tmp_3==0,
- Tmp1=[Tmp_1,Tmp_2,Ni,#];
- KL1=concat(KL1,[Tmp1]);
- ,
- Tmp2=[Tmp_1,Tmp_2,Ni,#];
- KL2=concat(KL2,[Tmp2]);
- );
- );
- );
- );
- Out=[];
- if(length(KL1)>0,
- Tmp=KL1_1;
- pP=Tmp_1;
- rT=Tmp_2;
- Ni=Tmp_3;
- Nj=Tmp_4;
- Tmp=[pP,Ni+rT,Nj];
- Out=[Tmp];
- );
- forall(2..length(KL1),Ni,
- Tmp=KL1_Ni;
- pP=Tmp_1;
- Tmp2=0;
- Flg=0;
- forall(1..length(Out),Nj,
- if(Flg==0,
- Tmp=Out_Nj;
- if(|pP-Tmp_1|<Eps,
- Tmp2=1;
- Flg=1;
- );
- );
- );
- if(Tmp2==0,
- Tmp=KL1_Ni;
- pP=Tmp_1;
- rT=Tmp_2;
- Tmp1=Tmp_3;
- Tmp2=Tmp_4;
- Tmp=[pP,Tmp1+rT,Tmp2];
- Out=concat(Out,[Tmp]);
- );
- );
- forall(1..length(KL2),Ni,
- Tmp=KL2_Ni; // 15.11.21 Usui
- pP=Tmp_1;
- Tmp2=0;
- Flg=0;
- forall(1..length(Out),Nj,
- if(Flg==0,
- Tmp=Out_Nj;
- if(|pP-Tmp_1|<Eps,
- Tmp2=1;
- Flg=1;
- );
- );
- );
- if(Tmp2==0,
- Tmp=KL2_Ni;
- rT=Tmp_2;
- rT=min([max([rT,0]),1]); // 15.11.21 Usui
- Tmp=[pP,Tmp_3+rT,Tmp_4];
- Out=concat(Out,[Tmp]);
- );
- );
- );
- Tmp1=Out; // 15.04.06 from
- Out=[];
- forall(Tmp1,Tmp2,
- Tmp3=select(Out,|#_1-Tmp2_1|<Dif);
- if(length(Tmp3)==0,
- Out=append(Out,Tmp2);
- );
- ); // 15.04.06 upto
- Out;
-);
-
-Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
-//help:Intersectcrvs("gr1","pa1");
-Intersectcrvs(Gr1,Gr2,options):=(
- regional(tmp,tmp1,tmp2);
- tmp1=IntersectcrvsPp(Gr1,Gr2,options);
- apply(tmp1,#_1);
-);
-
-NearestptcrvPhy(point,PL):=(
- regional(tmp,pP,plist);
- pP=Pcrd(point);
- if(isstring(PL),plist=parse(PL),plist=PL);
- if(MeasureDepth(plist)==2,plist=plist_1);
- plist=apply(plist,#); // 14.12.18
- tmp=Nearestpt(pP,plist);
- tmp=tmp_1;
- [tmp_1/SCALEX,tmp_2/SCALEY];
-);
-
-Nearestptcrv(point,plist):=(
-//help:Nearestptcrv(A,"gr1");
- regional(tmp);
- tmp=Nearestpt(point,plist);
- tmp_1;
-);
-
-Nearestpt(point,PL2):=(
- regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
- a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
-//help:Nearestpt("gr1","gr2");
- if(isstring(point),PL1=parse(point),PL1=point);
- if(MeasureDepth(PL1)==2,PL1=PL1_1);
- if(!islist(PL1_1),
- PL1=[PL1];
- Flg=0;
- ,
- Flg=1;
- );
- if(isstring(PL2),PL=parse(PL2),PL=PL2);
- if(MeasureDepth(PL)==2,PL=PL_1);
- Eps=10^(-6);
- Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
- forall(1..length(PL1),Nn, // 16.05.04
- pA=PL1_Nn;
- Pm=PL_1;
- Im=1;
- Sm=|Pm-pA|;
- forall(1..(length(PL)-1),Ni,
- a1=PL_Ni_1; a2=PL_Ni_2;
- b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
- v1=b1-a1; v2=b2-a2;
- x1=pA_1; x2=pA_2;
- Tmp=v2^2+v1^2;
- if(abs(Tmp)>Eps,
- rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
- if(rT<-Eps,
- pP=[a1,a2];
- ,
- if(rT>1+Eps,
- pP=[b1,b2];
- ,
- pP=[a1+rT*v1,a2+rT*v2];
- );
- );
- sS=|pP-pA|;
- if(sS<Sm-Eps,
- Tmp=ParamonCurve(pP,Ni,PL);
- Pm=pP; Lm=Tmp; Sm=sS;
- );
- );
- if(Sm<Ans_5, // 16.05.03from
- Ans=[pA,Nn,Pm,Lm,Sm];
- );
- ); // 16.05.03upto
- );
- if(Flg==0,
- Ans=Ans_(3..5);
- );
- Ans;
-);
-
-Derivative(fun,var,value):=(
-//help:Derivative("x^3","x",2);
- regional(str,tmp);
- str="d(";
- str=str+replace(fun,var,"#")+",";
- str=str+value+")";
- tmp=Pcrd([1,parse(str)]); // 14.11.08
- tmp_2;
-);
-
-Integrate(pltdata,range):=Integrate(pltdata,range,[]);
-Intergrate(Arg1,Arg2,Arg3):=(
- regional(pltdata,range,options,fnstr,vartr);
- if(islist(Arg2),
- pltdata=Arg1;
- range=Arg2;
- options=Arg3;
- Integrate(pltdata,range,options);
- ,
- fnstr=Arg1;
- vastr=Arg2;
- range=Arg3;
- Integrate(fnstr,vastr,range,[]);
- );
-);
-
-Integrate(pltdata,range,options):=(
-//help:Integrate("gr1",[1,3]);
-//help:Integrate("gr1",[1,3],["Rule=t"]);
- regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
- tmp=Divoptions(options);
- eqL=tmp_5;
- Rule="o";
- forall(eqL,
- if(Toupper(substring(#,0,1))=="R",
- tmp=indexof(#,"=");
- Rule=substring(#,tmp,tmp+1);
- );
- );
- if(Rule=="o",
- Sm= IntegrateO(pltdata,range);
- ,
- if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
- if(MeasureDepth(pdata)==2,pdata=pdata_1);
- va1=MeetCurve(pdata,range_1,0);
- va2=MeetCurve(pdata,range_2,0);
- list=select(pdata,(#_1>range_1 & #_1<range_2));
- list=apply(list,LLcrd(#)); // 15.09.14
- list=concat([va1],list);
- list=concat(list,[va2]);
- Sm=0;
- forall(1..(length(list)-1),
- ptP=list_#; // 15.09.14
- ptQ=list_(#+1);
- Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
- );
- Sm;
- );
-);
-
-Integrate(fnstr,vastr,range,options):=(
-//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
- regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
- Num=100;
- Way="t";
- forall(options,
- if(indexof(#,"=")>0,
- if(indexof(#,"N=")>0,
- Num=parse(substring(#,indexof(#,"="),length(#)));
- );
- if(indexof(#,"Num=")>0,
- Num=parse(substring(#,indexof(#,"="),length(#)));
- );
- if(Toupper(substring(#,0,1))=="R",
- tmp=indexof(#,"=");
- Way=substring(#,tmp,tmp+1);
- );
- );
- );
- Sm=0;
- if(Way=="t",
- forall(1..Num,
- Lx=range_1+(range_2-range_1)*(#-1)/Num;
- Rx=range_1+(range_2-range_1)*#/Num;
- va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
- va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
- Sm=Sm+(va1+va2)*(Rx-Lx)/2;
- );
- ,
- sx=range_1;
- ex=range_2;
- dx=(ex-sx)/Num;
- xn=apply(0..Num,sx+#*dx);
- yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
- dx=dx/2;
- repeat(Num,s,
- x0=xn_s;
- x1=(xn_s+xn_(s+1))/2;
- x2=xn_(s+1);
- y0=yn_s;
- y1=parse(replace(fnstr,vastr,textformat(x1,5)));
- y2=yn_(s+1);
- Sm=Sm+dx*(y0+4*y1+y2)/3;
- );
- );
- Sm;
-);
-
-IntegrateO(p0org,p1org,p2org,p3org):=(
- regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
- p11,p12,p21,p22,p31,p32, tmp);
- if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
- if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
- if(ispoint(p2org),p2=p2org.xy,p2=p2org);
- if(ispoint(p3org),p3=p3org.xy,p3=p3org);
- tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
- cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
- pQ=p1+cc*(p2-p0);
- pR=p2+cc*(p1-p3);
- p01=p1_1; p02=p1_2;
- p31=p2_1; p32=p2_2;
- p11=pQ_1; p12=pQ_2;
- p21=pR_1; p22=pR_2;
- tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
- 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
- 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
- 6*p32*p21+10*p32*p31;
- tmp=tmp/20;
-);
-IntegrateO(pltdata,rangeorg):=(
-//help:IntegrateO("gr1",[0,2]);
- regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
- Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
- if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
- if(MeasureDepth(pdata)==2,pdata=pdata_1);
- range=rangeorg;
- pmflg=1;
- if(range_2<range_1,
- range=reverse(range);
- pmflg=-1;
- );
- va1=MeetCurve(pdata,range_1,0);
- va2=MeetCurve(pdata,range_2,0);
- list=select(pdata,(#_1>range_1 & #_1<range_2));
- if((length(list)>0) & (list_1_1>list_(length(list))_2),
- list=reverse(list);
-// pmflg=pmflg*(-1);
- );
- list=apply(list,LLcrd(#));
- list=concat([va1],list);
- list=concat(list,[va2]);
- Sm=0;
- forall(1..(length(list)-1),
- p1=list_#;
- p2=list_(#+1);
- if(#==1 % #==length(list)-1,
- tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
- Sm=Sm+tmp1;
- ,
- p0=list_(#-1);
- p3=list_(#+2);
- tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
- cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
- pQ=p1+cc*(p2-p0);
- pR=p2+cc*(p1-p3);
- p01=p1_1; p02=p1_2;
- p31=p2_1; p32=p2_2;
- p11=pQ_1; p12=pQ_2;
- p21=pR_1; p22=pR_2;
- tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
- 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
- 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
- 6*p32*p21+10*p32*p31;
- tmp1=tmp1/20;
- Sm=Sm+tmp1;
- );
- );
- if(pmflg==-1,
- Sm=-Sm;
- );
- Sm;
-);
-
-Findarea(pdstr):=(
-//help:Findarea("sgABCA");
- regional(pd,p1,p2,s,tmp);
- if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
- s=0;
- forall(1..(length(pd)-1),
- p1=Lcrd(pd_#);
- p2=Lcrd(pd_(#+1));
- tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
- s=s+tmp;
- );
- if(s<0,s=-s);
- s;
-);
-
-Findarea(pdstr):=( // 15.11.27
-//help:Findarea("cr1");
- regional(pd,p0,p1,p2,p3,s,tmp);
- if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
- s=0;
- forall(1..(length(pd)-1),
- p1=pd_#;
- p2=pd_(#+1);
- if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
- if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
- tmp=IntegrateO(p0,p1,p2,p3);
- s=s+tmp;
- );
- if(s<0,s=-s);
- s;
-);
-
-Findlength(pdstr):=(
-//help:Findlength("gr1");
- regional(pd,p1,p2,s,tmp);
- if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
- s=0;
- forall(1..(length(pd)-1),
- p1=Lcrd(pd_#);
- p2=Lcrd(pd_(#+1));
- tmp=|p2-p1|;
- s=s+tmp;
- );
- s;
-);
-
-Inversefun(fnstr,rngstr,value):=(
- regional(tmp,varstr,range,x1,x2,x3,va1,va2);
- tmp=indexof(rngstr,"=");
- varstr=substring(rngstr,0,tmp-1);
- range=parse(substring(rngstr,tmp,length(rngstr)));
- x1=range_1; x2=range_2;
- repeat(15,
- x3=(x1+x2)/2;
- va1=parse(replace(fnstr,varstr,textformat(x1,5)));
- va2=parse(replace(fnstr,varstr,textformat(x3,5)));
- if((va1>value & va2>value) % (va1<value & va2<value),
- x1=x3;
- ,
- x2=x3;
- );
- );
- va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
- va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
- if(x1==range_1 % x2==range_2,
- println("not found in ("+textformat(range_1,5)
- +","+textformat(range_2,5)+")");
- );
- if(abs(va1)<=abs(va2),x1,x2);
-);
-
-Lcrd(pt):=(
- regional(tmp);
- if(ispoint(pt),
- tmp=[pt.x/SCALEX,pt.y/SCALEY];
- ,
- tmp=pt;
- );
- tmp;
-);
-
-Pcrd(pt):=(
- regional(tmp);
- if(ispoint(pt),
- tmp=re(pt.xy); // 15.07.24
- ,
- tmp=[pt_1*SCALEX,pt_2*SCALEY];
- );
- tmp;
-);
-
-LLcrd(pt):=(
- regional(tmp);
- if(ispoint(pt),
- tmp=pt.xy
- ,
- tmp=pt;
- );
- tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
- tmp;
-);
-
-Doscaling(pltdata):=(
- regional(Level,Out,gL,gr,tmp);
- if(ispoint(pltdata) % isreal(pltdata_1),
- gL=[[pltdata]];
- Level=0;
- ,
- if(ispoint(pltdata_1) % isreal(pltdata_1_1),
- gL=[pltdata];
- Level=1;
- ,
- gL=pltdata;
- Level=2;
- );
- );
- Out=[];
- forall(gL,gr,
- tmp=apply(gr,Lcrd(#));
- tmp=apply(tmp,LLcrd(#));
- Out=concat(Out,[tmp]);
- );
- if(Level==0,
- Out=Out_1_1;
- );
- if(Level==1,
- Out=Out_1;
- );
- Out;
-);
-
-Unscaling(pltdata):=(
- regional(Level,Out,gL,gr,tmp);
- if(ispoint(pltdata) % isreal(pltdata_1),
- gL=[[pltdata]];
- Level=0;
- ,
- if(ispoint(pltdata_1) % isreal(pltdata_1_1),
- gL=[pltdata];
- Level=1;
- ,
- gL=pltdata;
- Level=2;
- );
- );
- Out=[];
- forall(gL,gr,
- tmp=apply(gr,Lcrd(#));
- tmp=apply(tmp,LLcrd(#));
- Out=concat(Out,[tmp]);
- );
- if(Level==0,
- Out=Out_1_1;
- );
- if(Level==1,
- Out=Out_1;
- );
- Out;
-);
-
-Definecolor(name,data):=(
-//help:Definecolor("mycolor",[1,1,1,0]);
- regional(type,tmp);
- if(length(data)>3,type="cmyk",type="rgb");
- tmp=text(data);
- tmp=substring(tmp,1,length(tmp)-1);
- tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
- Texcom(tmp);
-);
-
-Setcolor(Par):=(
-//help:Setcolor([1,0,0,1]);
-//help:Setcolor([1,1,0]);
- if(islist(Par),
- if(length(Par)==3,
- Setcolorrgb(Par); // 2015.04.28
-// KCOLOR=Par;
- );
- if(length(Par)==4,
- Setcolor(Par,[]);
- );
- ,
- Setcolor(Par,[]);
- );
-);
-
-Setcolor(colorname,options):=(
-//help:Setcolor("greenyellow",0.3);
- regional(tmp);
- if(isstring(colorname),
- tmp="Setcolor("+Dq+colorname+Dq;
- if(length(options)>0,
- tmp=tmp+","+text(options_1);
- );
- Com2nd(tmp+")");
- );
- if(islist(colorname),
- tmp=text(colorname);
- tmp=substring(tmp,1,length(tmp)-1);
- tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
- Com2nd(tmp);
- );
-);
-
-Setcolorrgb(colorlist):=(
-// help:Setcolorrgb([0.5,0.3,0.4]);
- regional(tmp);
- tmp=text(colorlist);
- tmp=substring(tmp,1,length(tmp)-1);
- tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
- Com2nd(tmp);
-);
-
-ColorRgb2Cmyk(clr):=(
-// help:ColorRgb([0.2,0.5,0.1]);
- regional(clrnew,tmp,black);
- tmp=apply(clr,1-#);
- black=min(tmp);
- tmp=apply(clr,(1-#-black)/(1-black));
- clrnew=append(tmp,black);
- clrnew;
-);
-
-ColorCmyk2Rgb(clr):=(
-// help:ColorRgb([0.2,0.5,0.1,0.2]);
- regional(clrnew,tmp,black);
- black=clr_4;
- tmp=apply(clr,1-min(1,#*(1-black)+black));
- clrnew=tmp_(1..3);
- clrnew;
-);
-
-Colorrgbhsv(rgb):=(
- regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
- varR = rgb_1;
- varG = rgb_2;
- varB = rgb_3;
- varMin = min( [varR, varG, varB] );
- varMax = max( [varR, varG, varB] );
- delMax = varMax - varMin ;
- vv = varMax;
- if ( delMax == 0 ,
- hh = 0 ;
- ss = 0 ;
- ,
- ss = delMax / varMax;
- delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
- delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
- delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
- if( varR == varMax ,
- hh = delB - delG;
- ,
- if ( varG == varMax,
- hh = ( 1 / 3 ) + delR - delB;
- ,
- if ( varB == varMax ,
- hh = ( 2 / 3 ) + delG - delR;
- );
- );
- );
- if ( hh < 0 ,hh = hh+1);
- if ( hh > 1 ,hh = hh-1);
- );
- [hh*360,ss,vv];
-);
-
-Colorhsvrgb(sL):=(
- regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
- tmp=[sL_1/60,sL_2,sL_3];
- hi=mod(floor(tmp_1),6);
- ff=tmp_1-floor(tmp_1);
- tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
- tmp2=append(tmp2,tmp_3);
- if(hi==0,dL=tmp2_[4,3,1]);
- if(hi==1,dL=tmp2_[2,4,1]);
- if(hi==2,dL=tmp2_[1,4,3]);
- if(hi==3,dL=tmp2_[1,2,4]);
- if(hi==4,dL=tmp2_[3,1,4]);
- if(hi==5,dL=tmp2_[4,1,2]);
- dL;
-);
-
-Colorrgbhsl(rgb):=(
- regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
- rr = rgb_1 ;
- gg = rgb_2 ;
- bb = rgb_3 ;
- mn = min([rr, gg, bb]);
- mx = max([rr, gg, bb]);
- delta = mx - mn;
- ll = (mx + mn) / 2;
- if (delta == 0,
- hh=0;
- ss=0;
- ,
- if (ll < 0.5,
- ss = delta/ (mx + mn);
- ,
- ss = delta / (2 - mx - mn);
- );
- deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
- deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
- deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
- if (rr == mx,
- hh = deltaB - deltaG;
- ,
- if (gg == mx,
- hh = (1 / 3) + deltaR - deltaB;
- ,
- if (bb == mx,
- hh = (2 / 3) + deltaG - deltaR;
- );
- );
- );
- if ( hh < 0, hh = hh+1);
- if ( hh > 1, hh = hh-1);
- );
- [hh*360,ss,ll];
-);
-
-Colorhslrgb(hsl):=(
- regional(hh,ss,ll,rr,gg,bb,var1,var2);
- hh=hsl_1/360;
- ss=hsl_2;
- ll=hsl_3;
- if ( ss == 0.0,
- rr = ll ;
- gg = ll ;
- bb = ll ;
- ,
- if ( ll < 0.5 ,
- var2 = ll * ( 1.0 + ss );
- ,
- var2 = ( ll + ss ) - ( ss * ll );
- );
- var1 = 2.0 * ll - var2;
- rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
- gg = hue2rgb( var1, var2, hh );
- bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
- );
- [rr,gg,bb];
-);
-
-hue2rgb(vv1,vv2,vh):=(
- regional(out);
- if ( vh < 0.0 ,vh =vh+1);
- if ( vh > 1.0 ,vh =vh-1);
- if ( 6.0*vh < 1.0 ,
- out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
- ,
- if( 2.0*vh < 1.0 ,
- out = vv2;
- ,
- if ( 3.0*vh < 2.0 ,
- out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
- ,
- out= vv1 ;
- );
- );
- );
- out;
-);
-
-Colorrgbhwb(sL):=(
- regional(dl1,dl2,dl3);
- dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
- dl2 = min(sL);
- dl3 = 1 - max(sL);
- dL= [dl1, dl2 , dl3 ];
-);
-
-Colorhwbrgb(sLorg):=(
- regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
- sL=sLorg;
- sL=[sL_1/360,sL_2,sL_3];
- ratio = sL_2 + sL_3;
- // sL_2 + sL_3 cant be > 1
- if (ratio > 1.,
- sL_2 =sL_2 / ratio;
- sL_3 = sL_3 / ratio;
- );
- ii = floor(6 * sL_1);
- vv = 1 - sL_3;
- ff = 6 * sL_1 - ii;
- if(mod(ii,2)==1,ff = 1 - ff);
- nn = sL_2 + ff * (vv - sL_2); // linear interpolation
- tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
- [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
- flg=0;
- forall(0..6,
- if(flg==0 & ii == # ,
- dL=tmp_(#+1);
- flg=1;
- );
- );
- dL;
-);
-
-Colorhslhsv(sL):=(
- regional(dl1,dl2,dl3,dL);
- dl1=sL_1;
- if(sL_3 == 0,
- // no need to do calc on black
- // also avoids divide by 0 error
- dL= [0, 0, 0];
- ,
- sL_3 = sL_3 * 2;
- if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
- dl3 = (sL_3 + sL_2) / 2;
- dl2 = (2 * sL_2) / (sL_3 + sL_2);
- dL = [dl1, dl2, dl3];
- );
- dL;
-);
-
-Colorcode(src,dest,sL):=(
-//help:Colorcode("rgb","cmyk",[1,0.5,0]);
- regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
- regional(dl1,dl2,dl3);
- if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
- if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
- if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
- if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
- if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
- if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
- if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
- if(src=="hsv" & dest=="hsl",
- dl1 = sL_1;
- dl3 = (2 - sL_2) * sL_3;
- dl2 = sL_2 * sL_3;
- if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
- dl3 =d l3/ 2;
- dL = [dl1, dl2 , dl3 ];
- );
-
- if(src=="rgb" & dest=="cmyk",
- tmp=apply(sL,1-#);
- black=min(tmp);
- tmp=apply(sL,(1-#-black)/(1-black));
- dL=append(tmp,black);
- );
- if(src=="cmyk" & dest=="rgb",
- black=sL_4;
- tmp=apply(sL,1-min(1,#*(1-black)+black));
- dL=tmp_(1..3);
- );
- if(src=="hsv" & dest=="cmyk",
- tmp=Colorcode("hsv","rgb",sL);
- dL=Colorcode("rgb","cmyk",tmp);
- );
- if(src=="cmyk" & dest=="hsv",
- tmp=Colorcode("cmyk","rgb",sL);
- dL=Colorcode("rgb","hsv",tmp);
- );
-
- if(src=="hsv" & dest=="hwb",
- tmp = Colorcode("hsv","rgb",sL);
- dL = Colorcode("rgb","hwb",tmp);
- );
- if(src=="hwb" & dest=="hsv",
- tmp = Colorcode("hwb","rgb",sL);
- dL = Colorcode("rgb","hsv",tmp);
- );
- if(src=="hsl" & dest=="hwb",
- tmp = Colorcode("hsl","rgb",sL);
- dL = Colorcode("rgb","hwb",tmp);
- );
- if(src=="hwb" & dest=="hsl",
- tmp = Colorcode("hwb","rgb",sL);
- dL = Colorcode("rgb","hsl",tmp);
- );
- if(src=="hsl" & dest=="cmyk",
- tmp = Colorcode("hsl","rgb",sL);
- dL = Colorcode("rgb","cmyk",tmp);
- );
- if(src=="hwb" & dest=="cmyk",
- tmp = Colorcode("hwb","rgb",sL);
- dL = Colorcode("rgb","cmyk",tmp);
- );
- if(src=="cmyk" & dest=="hsl",
- tmp = Colorcode("cmyk","rgb",sL);
- dL = Colorcode("rgb","hsl",tmp);
- );
- if(src=="cmyk" & dest=="hwb",
- tmp = Colorcode("cmyk","rgb",sL);
- dL = Colorcode("rgb","hwb",tmp);
- );
- if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
- if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
-
- if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
- if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
-
- if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
- if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
-
- if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
- if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
-
- dL;
-);
-
-Addcolor(cmdorg,list):=(
-//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
- regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
- cmd=replace(cmdorg,"'",Dq);
- if(length(list)==3,
- rgb=list;
- cmyk=Colorcode("rgb","cmyk",list);
- ,
- cmyk=list;
- rgb=Colorcode("cmyk","rgb",list);
- );
- tmp1="color->"+text(rgb);
- tmp2="Setcolor("+text(cmyk)+");";
- tmp3=substring(cmd,0,length(cmd)-2);
- tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
- if(tmp!="[",
- tmp3=tmp3+",";
- );
- tmp3=tmp3+Dq+tmp1+Dq+"])";
- parse(tmp2);
- parse(tmp3);
- Setcolor("black");
-);
-
-Colorinfile(filename,clrf,clrt):=(
- regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
- if(length(clrf_1)==3,
- head="[rgb]{";
- ,
- head="[cmyk]{";
- );
- tmp=apply(clrf,text(#));
- cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
- if(length(clrt_1)==3,
- head="[rgb]{";
- ,
- head="[cmyk]{";
- );
- tmp=apply(clrt,text(#));
- chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
- tmp1=load(filename);
- tmp=tokenize(tmp1,"{\unitlength");
- head=tokenize(tmp_1,"%%%");
- head=head_(2..length(head));
- head=apply(head,"%%%"+#);
- tmp2=tmp_2;
- forall(1..5,
- tmp2=replace(tmp2,cstrL_#,chstrL_#);
- );
- body=tokenize(tmp2,"%");
- body_1="{\unitlength"+body_1;
- body=apply(body,#+"%");
- body=body_(1..(length(body)-1));
- tmp=replace(filename,".tex","new.tex");
- SCEOUT=openfile(tmp);
- forall(head,
- println(SCEOUT,#);
- );
- forall(1..length(body),
- tmp=body_#;
- if(#<length(body),
- println(SCEOUT,tmp);
- ,
- print(SCEOUT,tmp)
- );
- );
- closefile(SCEOUT);
-);
-
-GetLinestyle(str,name):=(
- regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
- Ltype=-1;
- Dop="";
- tmp1=indexof(str,",");
- if(tmp1>0,
- Dop=","+substring(str,tmp1,length(str));
- );
- noflg=parse(substring(str,0,1));
- if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
- tmp1=substring(str,1,3);
- if(tmp1=="dr" % tmp1=="Dr",
- Ltype=0;
- if(noflg==0 & subflg==0, // 16.02.29
- Drwline(name+Dop);
- );
- );
- if(tmp1=="da" % tmp1=="Da",
- Ltype=1;
- if(noflg==0 & subflg==0, // 16.02.29
- Dashline(name+Dop);
- );
- );
- if(tmp1=="id" % tmp1=="Id",
- Ltype=2; // 15.11.09
- if(noflg==0 & subflg==0, // 16.02.29
- Invdashline(name+Dop);
- );
- );
- if(tmp1=="do" % tmp1=="Do",
- Ltype=3;
- if(noflg==0 & subflg==0, // 16.02.29
- Dottedline(name+Dop);
- );
- );
- if(tmp1=="dp" % tmp1=="Dp",
- Ltype=0;
- tmp1=parse(name);
- tmp2="";
- forall(tmp1,
- tmp2=tmp2+textformat(#_1,5)+",";
- );
- tmp2=substring(tmp2,0,length(tmp2)-1);
- if(noflg==0,
- Drwpt(tmp2+Dop);
- );
- );
- if(tmp1=="no" % tmp1=="No",
- Ltype=10;
- );
- Ltype;
-);
-
-Chunderscore(str):=(
- regional(flg,tmp,tmp1,tmp2,tmp3);
- if(indexof(str,"]")>0,
- tmp1=replace(str,"]",",]");
- ,
- tmp1=str+",";
- );
- flg=0;
- tmp2=[];
- tmp3=0;
- forall(1..length(tmp1),
- if(flg==0,
- tmp=substring(tmp1,tmp3,length(tmp1));
- tmp=indexof(tmp,"_");
- if(tmp==0,
- flg=1;
- ,
- tmp3=tmp3+tmp;
- tmp=substring(tmp1,tmp3,length(tmp1));
- tmp=indexof(tmp,",")-1;
- tmp=substring(tmp1,tmp3,tmp3+tmp);
- tmp2=append(tmp2,tmp);
- );
- );
- );
- forall(tmp2,
- tmp1=replace(tmp1,"_"+#,"("+#+")");
- );
- if(indexof(str,"]")>0,
- tmp1=replace(tmp1,",]",")");
- tmp1=replace(tmp1,"[","list(");
- ,
- tmp1=substring(tmp1,0,length(tmp1)-1);
- );
- tmp1;
-);
-
-//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
-AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
-// if(isstring(Arg2),
-// AddGraph(Arg1,Arg2,[]);
-// ,
-// if(MeasureDepth(Arg2)>0,
-// Addgraph(Arg1,Arg2,[]);
-// ,
-// Addgraph("-"+Arg1,Arg1,Arg2);
-// );
-// );
-//);
-AddGraph(nm,pltdata,options):=(
-//help:AddGraph("1","imp1"); // 16.04.04
-//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
- regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
- tmp,tmp1,tmp2,tmp3);
- if(substring(nm,0,1)=="-",
- name=substring(nm,1,length(nm));
- ,
- name="ad"+nm;
- );
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_9;
- if(isstring(pltdata),
- pdata=parse(pltdata)
- ,
- if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
- pdata=apply(pdata,parse(#));
- ); // 15.01.22
- pdata=Flattenlist(pdata);
- tmp1=[];
- forall(pdata,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- if(length(tmp1)==1,tmp1=tmp1_1);
- pdata=tmp1;
- if(Noflg<3,
- println("generate addgraph "+name);
- tmp=name+"="+textformat(pdata,5);
- parse(tmp);
- if(isstring(pltdata), // 16.04.04 from
- if(indexof(pltdata,"]")>0,
- tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
- tmp1=replace(tmp1,"]",",]");
- ,
- tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
- );
- flg=0;
- tmp2=[];
- tmp3=0;
- forall(1..length(tmp1),
- if(flg==0,
- tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
- if(tmp==0,
- flg=1;
- ,
- tmp3=tmp3+tmp;
- tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
- tmp=substring(tmp1,tmp3,tmp3+tmp);
- tmp2=append(tmp2,tmp);
- );
- );
- );
- forall(tmp2,
- tmp1=replace(tmp1,"_"+#,"("+#+")");
- );
- tmp1=replace(tmp1,",]",")");
- tmp1=replace(tmp1,",","),Listplot(");
- if(indexof(pltdata,"[")>0,
- tmp1=tmp1+")";
- );
- GLIST=append(GLIST,name+"="+tmp1);
- ,
- if(MeasureDepth(pdata)==1,
- tmp1=name+"=Listplot("+textformat(pdata,5)+")";
- ,
- tmp1="list(";
- forall(1..length(pdata),
- tmp=name+"p"+textformat(#,5)+"=";
- if(length(pdata_#)>1, // 15.01.22
- tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
- ,
- tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
- );
- GLIST=append(GLIST,tmp);
- tmp1=tmp1+name+"p"+textformat(#,5)+",";
- );
- tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
- );
- GLIST=append(GLIST,tmp1);
- );
- ); // 16.04.04 upto
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
-);
-
-Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
-Joincrvs(nm,plotstrL,options):=(
-//help:Joincrvs("1",["sgAB","sgDCB"]);
- regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
- opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
- name="join"+nm;
- plotlist=[];
- forall(plotstrL,str,
- if(isstring(str),
- tmp=parse(str);
- tmp=apply(tmp,LLcrd(#));
- ,
- tmp=str;
- );
- plotlist=append(plotlist,tmp);
- );
- Eps=10^(-4);
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- tmp1=tmp_6;
- if(length(tmp1)>0,Eps=tmp1_1);
- QdL=[];
- forall(plotlist,Qd,
- if(ispoint(Qd_1) % !islist(Qd_1_1),
- QdL=concat(QdL,[Qd]);
- ,
- forall(Qd,
- QdL=concat(QdL,[#]);
- );
- );
- );
- Flg=0;
- if(length(QdL)==0,
- PtL=[];
- Flg=1;
- );
- if(Flg==0,
- PtL=QdL_1;
- forall(2..length(QdL),Ni,
- Qd=QdL_Ni;
- if(Numptcrv(Qd)>1,
- pP=Ptend(PtL);
- pS=Ptstart(PtL);
- pQ=Ptstart(Qd);
- pR=Ptend(Qd);
- rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
- if(rMN==|pP-pR|,
- Qd=reverse(Qd);
- ,
- if(rMN==|pS-pQ|,
- PtL=reverse(PtL);
- ,
- if(rMN==|pS-pR|,
- PtL=reverse(PtL);
- Qd=reverse(Qd);
- );
- );
- );
- );
- if(rMN>Eps,
- PtL=concat(PtL,Qd);
- ,
- PtL=concat(PtL,Qd_(2..length(Qd)));
- );
- );
- );
- if(Noflg<3,
- println("generate joincurve "+name);
- tmp1=apply(PtL,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1="";
- forall(plotstrL,
- tmp1=tmp1+#+",";
- );
- tmp1=substring(tmp1,0,length(tmp1)-1);
- GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PtL;
-);
-
-Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
-Partcrv(nm,pA,pB,PkLstr,options):=(
-//help:Partcrv("1",A,B,"sgABC");
-//help:Partcrv("1",1.3,2.5,"sgABC");
- regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
- opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
- name="part"+nm;
- if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
- DepthFlg=0;
- if(MeasureDepth(PkL)==2,
- PkL=PkL_1;
- DepthFlg=1;
- );
- PkL=apply(PkL,LLcrd(#));
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- Eps=10^(-3);
- Flg=0;
- if(isreal(pA),
- if(pA>pB+Eps,
- Npt=Numptcrv(PkL);
- Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
- Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
- tmp=Ptstart(PkL)-Ptend(PkL);
- if(|tmp|<Eps,
- Ans=Joincrvs("",[Out1,Out2],["nodata"]);
- ,
- Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
- );
- Flg=1;
- );
- if(Flg==0,
- nS=ceil(pA);
- nE=floor(pB);
- PPL=[];
- if(pA<nS-Eps,
- pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
- PPL=[pP];
- );
- PPL=concat(PPL,PkL_(nS..nE));
- if(pB>nE+Eps,
- pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
- PPL=concat(PPL,[pP]);
- );
- Ans=PPL;
- Flg=1;
- );
- );
- if(Flg==0,
- tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
- Ta=tmp_2;
- tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
- Tb=tmp_2;
- Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
- Ans=apply(Ans,Pcrd(#));
- );
- if(Noflg<3,
- println("generate partcrv "+name);
- tmp1=apply(Ans,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
-// GLIST=append(GLIST, // 16.04.03
- if(DepthFlg==0,
- tmp=PkLstr;
- ,
- tmp=PkLstr+"(1)";
- );
- tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
- +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
- GLIST=append(GLIST,tmp1);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Ans;
-);
-
-Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
-Opcrvs(num,Fig,options):=(
- //help:Subgraph(2,"grfs");
- regional(name,tmp,tmp1);
- name="-"+Fig+text(num);
- tmp=Fig+"_"+text(num);
- tmp1=parse(tmp);
- Listplot(name,tmp1,options);
-);
-
-
-Pointdata(nm,list):=Pointdata(nm,list,[]);
-Pointdata(nm,list,options):=(
-//help:Pointdata("1",[2,4],["Size=5"]);
-//help:Pointdata("2",[[2,3],[4,1]]);
- regional(name,nameL,ptlist,opstr,opcindy,
- eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
- name="pt"+nm;
- nameL=name+"L";
- println("generate pointdata "+name);
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- opstr=tmp_(length(tmp)-1);
- size="";
- eqL=tmp_5;
- if(length(eqL)>0,
- forall(eqL,
- tmp=substring(#,0,1);
- if(tmp=="s" % tmp=="S",
- tmp=indexof(#,"=");
- size=substring(#,tmp,length(#));
- );
- );
- );
- tmp=MeasureDepth(list);
- if(tmp>0, // 2015.02.21
- if(tmp==1,ptlist=list,ptlist=list_1);
- tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
- tmp1=text(tmp);
- tmp2=substring(tmp1,1,length(tmp1)-1);
- tmp3=tmp1;
- ,
- ptlist=list;
- tmp1=textformat(Pcrd(ptlist),5);
- tmp2=tmp1;
- tmp3="["+tmp1+"]";
- );
- tmp=name+"="+tmp1;
- parse(tmp);
- tmp=nameL+"="+tmp3;
- parse(tmp);
- if(Noflg<3,
- GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
- );
- if(Noflg<2,
- tmp=[nameL,0,opcindy];
- GCLIST=append(GCLIST,tmp);
- if(Noflg==0,
- if(length(size)>0,
- Com2nd("Setpt("+size+")");
- );
- thick=PenThick/PenThickInit; // 16.04.09 from
- if(length(size)>0,tmp1=parse(size),tmp1=1);
- tmp1=max(tmp1,1)/8;
- Setpen(tmp1); // 16.04.09 upto
- Com2nd("Drwpt(list("+name+")"+opstr+")");
- Setpen(thick); // 16.04.09
- if(length(size)>0,
- Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
- );
- );
- );
- ptlist;
-);
-
-Listplot(nm,list,options):=(
-//help:Listplot([A,B]);
-// help:Listplot(["A","B"]);
-//help:Listplot("1",[[2,1],[3,3]]);
-//help:Listplot(options2=["Msg=yes"]);
- regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
- if(substring(nm,0,1)=="-", // 16.01.27 from
- name=substring(nm,1,length(nm));
- ,
- name="sg"+nm;
- ); // upto
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- eqL=tmp_5;
- opcindy=tmp_(length(tmp));
- Msg=1; // 15.09.17
- forall(eqL,
- tmp=substring(#,0,1);
- if(Toupper(tmp)=="M",
- tmp=indexof(#,"=");
- tmp1=substring(#,tmp,tmp+1); // 16.06.28
- if(Toupper(tmp1)=="N", // 16.06.28
- Msg=0;
- );
- );
- );
- if(Noflg<3,
- if(Msg==1,
- println("generate Listplot "+name);
- );
- if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
- ptlist=apply(tmp,Pcrd(#));
- tmp=name+"="+textformat(ptlist,5);
- parse(tmp);
- GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- tmp1=apply(list,Lcrd(#));
- tmp1;
-);
-Listplot(Arg1,Arg2):=(
- regional(name,list,options,str);
- if(isstring(Arg1),
- name=Arg1;
- list=Arg2;
- Listplot(name,list,[]);
- ,
- list=Arg1;
- options=Arg2;
- name="";
- forall(list, // 16.10.07from
- name=name+#.name;
- );// 16.10.07upto
- Listplot(name,list,options);
- );
-);
-Listplot(list):=Listplot(list,[]);
-
-Lineplot(nm,list,options):=(
-//help:Lineplot([A,B]);
-//help:Lineplot("1",[[2,1],[3,3]]);
- regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
- Vec,pA,pB,Ltype,Noflg);
- name="ln"+nm;
- Mag=100;
- Semi="";
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- opstr=tmp_(length(tmp)-1);
- tmp1=tmp_6;
- if(length(tmp1)>0,Mag=tmp1_1);
- tmp1=tmp_7;
- if(length(tmp1)>0,Semi=tmp1_1);
- pA=Lcrd(list_1); pB=Lcrd(list_2);
- Vec= Mag/dist(pA,pB)*(pB-pA);
- if(length(Semi)==0,
- Out=[pA-Vec,pA+Vec];
- ,
- if(Semi=="+",
- Out=[pA,pA+Vec];
- ,
- Out=[pA-Vec,pA];
- );
- );
- if(Noflg<3,
- println("generate Lineplot "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-Lineplot(Arg1,Arg2):=(
- regional(name,list,options,str);
- if(isstring(Arg1),
- name=Arg1;
- list=Arg2;
- Lineplot(name,list,[]);
- ,
- list=Arg1;
- options=Arg2;
- name="";
- forall(list, // 16.10.07from
- name=name+#.name;
- );// 16.10.07upto
- Lineplot(name,list,options);
- );
-);
-Lineplot(list):=Lineplot(list,[]);
-
-Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
-Plotdata(name1,func,variable,options):=(
-//help:Plotdata("1","sin(x)","x",["Num=100"]);
-//help:Plotdata("2","x^2","x=[-1,1]");
-//help:Plotdata("3","Fout(x)","x",["out"]);
- regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
- PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
- Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
- name="gr"+name1;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- Inflg=tmp_3;
- Outflg=tmp_4;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- Num=50;
- Ec=[];
- Exfun="";
- Dc=1000;
- forall(eqL,
- tmp=indexof(#,"=");
- tmp1=substring(#,tmp,length(#));
- opstr=opstr+",'"+#+"'";
- if(substring(#,0,1)=="N",
- Num=parse(tmp1);
- );
- if(substring(#,0,1)=="E",
- if(substring(tmp1,0,1)=="[",
- Ec=parse(tmp1);
- ,
- Exfun=tmp1;
- );
- );
- if(substring(#,0,1)=="D",
- Dc=parse(tmp1);
- );
- );
- if(Inflg==0 & Outflg==0,
- Eps=10^(-3);
- tmp=replace(func,LFmark,"");
- tmp=tokenize(variable,"=");
- Vname=tmp_1;
- if(length(tmp)>1,
- tmp=tmp_2;
- tmp=parse(tmp);
- x1=tmp_1;
- x2=tmp_2;
- ,
- x1=XMIN;
- x2=XMAX;
- );
- // dx=(x2-x2)/Num;
- Ec=append(sort(Ec),10000);
- Fun=Assign(func,Vname, "xx");
- Exfun=Assign(Exfun,Vname, "xx");
- PdL=[];
- Ke=1;
- forall(0..Num,
- xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
- if(length(Exfun)>0,
- tmp=parse(Exfun);
- if(abs(tmp)<Eps,
- if(length(Pdt)>0,
- PdL=concat(PdL,["inf"]);
- );
- );
- ,
- Pa=[];
- if(xx-Ec_Ke<-Eps,
- Pa=[xx,parse(Fun)];
- );
- if(abs(xx-Ec_Ke)<=Eps,
- if(length(PdL)>0,
- if(PdL_(length(PdL))_1!="inf",
- Pa=["inf"];
- );
- );
- );
- if(xx-Ec_Ke>Eps,
- Pa=[xx,parse(Fun)];
- Ke=Ke+1;
- );
- if(length(Pa)>0,
- if(Pa_1=="inf",
- PdL=concat(PdL,[Pa]);
- ,
- if(length(PdL)==0,
- PdL=[Pa];
- ,
- tmp=PdL_(length(PdL));
- if(tmp_1=="inf",
- PdL=concat(PdL,[Pa]);
- ,
- if(dist(tmp,Pa)<Dc,
- PdL=concat(PdL,[Pa]);
- ,
- PdL=concat(PdL,[["inf"],Pa]);
- );
- );
- );
- );
- );
- );
- );
- tmp1=[];
- tmp2=select(1..length(PdL),PdL_#==["inf"]);
- tmp=1;
- forall(tmp2,
- if(#>tmp,
- tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
- );
- tmp=#+1;
- );
- if(tmp<length(PdL),
- tmp1=concat(tmp1,[PdL_(tmp..length(PdL))]);
- );
- PdL=tmp1;
- if(length(PdL)==1,
- PdL=PdL_1;
- );
- if(Noflg<3,
- println("generate Plotdata "+name);
- if(MeasureDepth(PdL)==1,
- tmp1=apply(PdL,Pcrd(#));
- ,
- tmp1=[];
- forall(PdL,tmp2,
- tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
- );
- );
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=replace(func,LFmark,"");
- tmp2=replace(variable,LFmark,"");
- tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PdL;
- ,
- // Inflg or Outflg >0 15.05.15
- if(Noflg<3,
- if(Outflg==1,
- println("Output Plotdata "+name);
- tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
- GLIST=append(GLIST,tmp);
- SCIWRLIST=append(SCIWRLIST,name);
- if(Inflg==0,Inflg=1); // 15.05.17
- );
- if(Inflg==1,
- println("Input Plotdata "+name);
- if(length(SCIRELIST)==0,
- ReadOutData(Fnameout);
- );
- tmp=parse(name);
- if(islist(tmp),
- Extractdata(name,["nodisp"]); // 12.19
- );
- tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
- Com1st(tmp);
- SCIRELIST=append(SCIRELIST,name);
- );
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- if(Inflg==1,
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- );
- );
-);
-
-Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
-Paramplot(name1,funstr,variable,options):=(
-//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
- regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
- Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
- Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
- name="gp"+name1;
- Eps=10^(-4);
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- Inflg=tmp_3;
- Outflg=tmp_4;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- Num=50;
- Ec=[];
- Exfun="";
- Dc=1000;
- forall(eqL,
- tmp=indexof(#,"=");
- tmp1=substring(#,tmp,length(#));
- opstr=opstr+",'"+#+"'";
- if(substring(#,0,1)=="N",
- Num=parse(tmp1);
- );
- if(substring(#,0,1)=="E",
- if(substring(tmp1,0,1)=="[",
- Ec=parse(tmp1);
- ,
- Exfun=tmp1;
- );
- );
- if(substring(#,0,1)=="D",
- Dc=parse(tmp1);
- );
- );
- if(Inflg==0 & Outflg==0,
- tmp=indexof(variable,"=");
- vname=substring(variable,0,tmp-1);
- str=substring(variable,tmp,length(variable));
- Rng=parse(str);
- t1=Rng_1; t2=Rng_2;
- dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
- func=Assign(funstr,vname,"tt");
- Out=[];
- Ec=append(sort(Ec),10000);
- ke=1;
- forall(0..Num,
- pt=[];
- tt=Rng_1+#*dt;
- if(tt-Ec_ke<-Eps,
- pa=parse(func);
- );
- if(abs(tt-Ec_ke)<=Eps,
- if(length(Out)>0,
- if(Out_(length(Out))_1!="inf",
- pa=["inf"];
- );
- );
- );
- if(tt-Ec_ke>Eps,
- pa=parse(func);
- ke=ke+1;
- );
- if(length(pa)>0,
- if(pa_1=="inf",
- Out=append(Out,pa);
- ,
- if(length(Out)==0,
- Out=[pa];
- ,
- tmp=Out_(length(Out));
- if(tmp_1=="inf",
- Out=append(Out,pa);
- ,
- if(|tmp-pa|<Dc,
- Out=append(Out,pa);
- ,
- Out=concat(Out,[["inf"],pa]);
- );
- );
- );
- );
- );
- );
- tmp1=[];
- tmp2=select(1..length(Out),Out_#==["inf"]);
- tmp=1;
- forall(tmp2,
- if(#>tmp,
- tmp1=concat(tmp1,[Out_(tmp..(#-1))])
- );
- tmp=#+1;
- );
- if(tmp<length(Out),
- tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
- );
- Out=tmp1;
- if(length(Out)==1,
- Out=Out_1;
- );
- if(Noflg<3,
- println("generate Paramplot "+name);
- if(MeasureDepth(Out)==1,
- tmp1=apply(Out,Pcrd(#));
- ,
- tmp1=[];
- forall(Out,tmp2,
- tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
- );
- );
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=replace(funstr,LFmark,""); // 15.11.13
- tmp2=replace(variable,LFmark,"");
- tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
- ,
- // Inflg or Outflg >0 15.05.15
- if(Noflg<3,
- if(Outflg==1,
- println("Output Paramplot "+name);
- tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
- GLIST=append(GLIST,tmp);
- SCIWRLIST=append(SCIWRLIST,name);
- if(Inflg==0,Inflg=1); // 15.05.17
- );
- if(Inflg==1,
- println("Input Paramplotdata "+name);
- if(length(SCIRELIST)==0,
- ReadOutData(Fnameout);
- );
- tmp=parse(name);
- if(islist(tmp),
- Extractdata(name,["nodisp"]); // 12.19
- );
- tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
- Com1st(tmp);
- SCIRELIST=append(SCIRELIST,name);
- );
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- if(Inflg==1,
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- );
- );
-);
-
-Circledata(cenrad):=Circledata(cenrad,[]);
-Circledata(para1,para2):=(
-//help:Circledata([A,B],["Rng=[0,pi/2]"]);
-//help:Circledata([A,B,C]);
- regional(name,cenrad,options,str,n);
- if(isstring(para1),
- name=para1;
- cenrad=para2;
- options=[];
- ,
- cenrad=para1;
- options=para2;
- name="";// 16.10.07from
- forall(cenrad,
- name=name+#.name;
- );// 16.10.07upto
- );
- Circledata(name,cenrad,options);
-);
-Circledata(nm,cenrad,options):=(
- regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
- tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
- name="cr"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- Num=50;
- Rg=[0,2*pi];
- forall(eqL,
- tmp=indexof(#,"=");
- tmp1=substring(#,tmp,length(#));
- opstr=opstr+",'"+#+"'";
- if(substring(#,0,1)=="N",
- Num=parse(tmp1);
- );
- if(substring(#,0,1)=="R",
- Rg=parse(tmp1);
- );
- );
- if(length(cenrad)==2,
- Ctr=Lcrd(cenrad_1);
- Ptcir=Lcrd(cenrad_2);
- ra=dist(Ctr,Ptcir);
- ,
- Eps=10^(-1);
- pA=Lcrd(cenrad_1);
- pB=Lcrd(cenrad_2);
- pC=Lcrd(cenrad_3);
- tmp=pB-pA;
- tmp1=(tmp_2,-tmp_1);
- tmp=pC-pB;
- tmp2=(tmp_2,-tmp_1);
- d1=det([tmp1,tmp2]);
- d2=det([pC-pA,tmp2]);
- if(abs(d1)<Eps & abs(d2)>10*Eps,
- println("points are in a line");
- ra=0;
- ,
- Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
- ra=|pA-Ctr|;
- tmp=name+"center="+Ctr;
- parse(tmp);
- Defvar(name+"center",Ctr);
- );
- );
- if(ra>0,
- Out=[];
- forall(0..Num,
- Th=Rg_1+#*(Rg_2-Rg_1)/Num;
- Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
- );
- ,
- Out=Lineplot("1",[pA,pB],["nodata"]);
- );
- if(Noflg<3,
- println("generate Circledata "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- if(length(cenrad)==2,
- tmp=name+"=Circledata("+cenrad+opstr+")";
- ,
- if(ra>0,
- tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
- ,
- tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
- );
- );
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-
-Framedata():=(
- regional(pA,pB);
- pA=LLcrd((SW+NE)/2); // 15.09.17
- pB=LLcrd(NE);
- Framedata("win",[pA,pB]);
-);
-Framedata(list):=Framedata(list,[]);
-Framedata(Arg1,Arg2):=(
- regional(name,list,options,str);
- if(isstring(Arg1),
- name=Arg1;
- list=Arg2;
- Framedata(name,list,[]);
- ,
- list=Arg1;
- options=Arg2;
- name="";// 16.10.07from
- forall(list,
- name=name+#.name;
- );// 16.10.07upto
- Framedata(name,list,options);
- );
-);
-
-Framedata(nm,list,options):=(
-//help:Framedata();
-//help:Framedata([A,B]);
-//help:Framedata("1",[A,B]);
-//help:Framedata("1",[C,dx,dy]);
- regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
- opcindy,Ltype,Noflg,cent,dx,dy);
- name="fr"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- if(length(list)==2, // 15.05.12
- pA=Lcrd(list_1); pB=Lcrd(list_2);
- dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
- ,
- pA=Lcrd(list_1);
- dx=list_2; dy=list_3;
- );
- x1=pA_1-dx; x2=pA_1+dx;
- y1=pA_2-dy; y2=pA_2+dy;
- Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
- if(Noflg<3,
- println("generate Framedata "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
-Framedata(nm,cent,dx,dy,options):=(
- regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
- name="fr"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- x1=cent.x-dx; x2=cent.x+dx;
- y1=cent.y-dy; y2=cent.y+dy;
- Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
- if(Noflg<3,
- println("generate Framedata "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-
-Framedata2(nm,list):=Framedata2(nm,list,[]);
-Framedata2(nm,list,options):=(
-//help:Framedata2("1",[A,B]);
- regional(tmp,tmp1,pC,pB);
- pC=(Lcrd(list_1)+Lcrd(list_2))/2;
- pB=Lcrd(list_2);
- Framedata(nm,[pC,pB],options);
-);
-
-Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
-Ovaldata(nm,Pdata,options):=(
-//help:Ovaldata("1",[A,B]);
-//help:Ovaldata(optios=[size]);
- regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
- opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
- name="ov"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- opstr=tmp_(length(tmp)-1);
- Rc=0.2;
- tmp1=tmp_6;
- if(length(tmp1)>0,Rc=tmp1_1*Rc);
-// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
- Ctr=Lcrd(Pdata_1);
- if(ispoint(Pdata_2) % islist(Pdata_2),
- tmp1=Lcrd(Pdata_2);
- Dx=abs(tmp1_1-Ctr_1);
- Dy=abs(tmp1_2-Ctr_2);
- ,
- Dx=Pdata_2;
- Dy=Pdata_3;
- );
- Point=Ctr+[Dx-Rc,Dy-Rc];
- tmp1=Circledata("1",[Point,Point+[Rc,0]],
- ["Rng=[0,pi/2]","Num=10","nodata"]);
- tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
- ["nodata"]);
- tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
- ["nodata"]);
- Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
- tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
- Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
- tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
- ["nodata"]);
- Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
- if(Noflg<3,
- println("generate Ovaldata "+name);
- tmp1=apply(Graph,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- GLIST=append(GLIST,
- name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- tmp1=apply(Graph,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
- GLIST=append(GLIST,
- name+"=Ovaldata("+tmp+opstr+")");
- );
- Graph;
-);
-
-Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
-Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
-Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
-Drawsegmark(nm,ptlist,options):=(
-//help:Segmark("1",[A,B]);
-//help:Segmark(options=["Type=1","Width=1","Size=1"]);
- regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
- tmp,tmp1,tmp2);
- name="mrk"+nm;
- pA=ptlist_1;
- pB=ptlist_2;
- size=0.15;
- wid=0.05;
- tp=1;
- tmp1=Divoptions(options);
- eqL=tmp1_5;
- forall(eqL,
- tmp=indexof(#,"=");
- tmp1=substring(#,tmp,length(#));
- tmp1=parse(tmp1);
- tmp=substring(#,0,1);
- if(tmp=="S" % tmp=="s",
- size=size*tmp1;
- );
- if(tmp=="W" % tmp=="w",
- wid=wid*tmp1;
- );
- if(tmp=="T" % tmp=="t",
- tp=tmp1;
- );
- );
- mid=(pA+pB)/2;
- dir=(pB-pA)/|pB-pA|;
- nor=[-dir_2,dir_1];
-// nor=nor/|nor|;
- if(tp==1,
- tmp1=mid+size*nor;
- tmp2=mid-size*nor;
- Listplot(name,[tmp1,tmp2]);
- );
- if(tp==2,
- tmp1=mid+wid*dir+size*nor;
- tmp2=mid+wid*dir-size*nor;
- Listplot(name+"r",[tmp1,tmp2]);
- tmp1=mid-wid*dir+size*nor;
- tmp2=mid-wid*dir-size*nor;
- Listplot(name+"l",[tmp1,tmp2]);
- );
- if(tp==3,
- tmp1=mid;
- tmp2=mid+size*dir;
- Circledata(name,[tmp1,tmp2]);
- );
- if(tp==4,
- tmp=mid+size*2/sqrt(3)*nor;
- tmp1=mid+size*dir-size/sqrt(3)*nor;
- tmp2=mid-size*dir-size/sqrt(3)*nor;
- Listplot(name,[tmp,tmp1,tmp2,tmp]);
- );
-);
-
-Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
-Parabolaplot(nm,ptlist,Arg):=(
- regional(rng,options);
- if(isstring(Arg),
- rng=Arg;
- options=[];
- ,
- rng="[-5,5]";
- options=Arg;
- );
- Parabolaplot(nm,ptlist,rng,options);
-);
-Parabolaplot(nm,ptlist,rng,options):=(
-//help:Parabolaplot("1",[A,B,C]):
-//help:Parabolaplot("1",[A,B,C],"[-5,5]");
- regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
- tmp1=Lcrd(ptlist_1);
- tmp2=Lcrd(ptlist_3);
- pB=Lcrd(ptlist_2);
- tmp=(tmp2-pB)/|tmp2-pB|;
- if(tmp_2>=0,
- angle=arccos(tmp_1);
- ,
- if(tmp_1>=0,
- angle=arcsin(tmp_2);
- ,
- angle=-arccos(tmp_1);
- );
- );
- pA=Rotatepoint(tmp1,-angle,pB);
- pC=Rotatepoint(tmp2,-angle,pB);
- tmp1=1/(2*(pA_2-pB_2));
- tmp2=1/2*(pA_2+pB_2);
- tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
- tmp=tmp+"+("+format(tmp2,5)+")";
- tmp1=parse(rng);
- tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
- tmp2="x="+textformat(tmp1,5);
- Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
- Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
-);
-
-Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
-Ellipseplot(nm,ptlist,Arg):=(
- regional(rng,options);
- if(isstring(Arg),
- rng=Arg;
- options=[];
- ,
- rng="[0,2*pi]";
- options=Arg;
- );
- Ellipseplot(nm,ptlist,rng,options);
-);
-Ellipseplot(nm,ptlist,rng,options):=(
-//help:Ellipseplot("1",[A,B,3]);
-//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
- regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
- pA=Lcrd(ptlist_1);
- tmp1=Lcrd(ptlist_2);
- if(ispoint(ptlist_3),
- tmp2=Lcrd(ptlist_3);
- d=|tmp2-pA|+|tmp2-tmp1|;
- ,
- d=ptlist_3;
- );
- tmp=(tmp1-pA)/|tmp1-pA|;
- if(tmp_2>=0,
- angle=arccos(tmp_1);
- ,
- if(tmp_1>=0,
- angle=arcsin(tmp_2);
- ,
- angle=-arccos(tmp_1);
- );
- );
- pB=Rotatepoint(tmp1,-angle,pA);
- f=|pB_1-pA_1|/2;
- a=d/2;
- b=sqrt(d^2/4-f^2);
- pM=(pA+pB)/2;
- tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
- tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
- Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
- Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
-);
-
-Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
-Hyperbolaplot(nm,ptlist,Arg):=(
- regional(rng,options);
- if(isstring(Arg),
- rng=Arg;
- options=[];
- ,
- rng="[-5/2,5/2]";
- options=Arg;
- );
- Hyperbolaplot(nm,ptlist,rng,options);
-);
-Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
-//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
-//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
- regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
- tmp=Divoptions(optionsorg);
- eqL=tmp_5;
- options=optionsorg;
- opasy=[];
- forall(eqL,
- if(Toupper(substring(#,0,1))=="A",
- tmp=indexof(#,"=");
- opasy=[substring(#,tmp,length(#))];
- options=remove(options,[#]);
- );
- );
- pA=Lcrd(ptlist_1);
- tmp1=Lcrd(ptlist_2);
- if(ispoint(ptlist_3),
- tmp2=Lcrd(ptlist_3);
- d=abs(|tmp2-pA|-|tmp2-tmp1|);
- ,
- d=ptlist_3;
- );
- tmp=(tmp1-pA)/|tmp1-pA|;
- if(tmp_2>=0,
- angle=arccos(tmp_1);
- ,
- if(tmp_1>=0,
- angle=arcsin(tmp_2);
- ,
- angle=-arccos(tmp_1);
- );
- );
- pB=Rotatepoint(tmp1,-angle,pA);
- f=|pB_1-pA_1|/2;
- a=d/2;
- b=sqrt(f^2-d^2/4);
- pM=(pA+pB)/2;
- tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
- tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
- Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
- tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
- tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
- Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
- tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
- Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
- if(length(opasy)>0,
- Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
- Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
- tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
- Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
- );
-);
-
-Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
-Polygonplot(nm,ptlist,number,options):=(
-//help:Polygonplot("1",[A,B],12);
- regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
- pA=Lcrd(ptlist_1);
- pB=Lcrd(ptlist_2);
- rr=|pB-pA|;
- tmp=(pB-pA)/rr;
- if(tmp_2>=0,
- angle=arccos(tmp_1);
- ,
- if(tmp_1>=0,
- angle=arcsin(tmp_2);
- ,
- angle=-arccos(tmp_1);
- );
- );
- ptL=[];
- forall(0..number,
- tmp=angle+#*2*pi/number;
- tmp1=pA+rr*[cos(tmp),sin(tmp)];
- if(#>0 & #<number,
- Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
- //Pointdata(nm,ptL);
- );
- tmp2=tmp1;
- ptL=append(ptL,tmp1);
- );
- Listplot(nm+"ply",ptL,options);
-);
-
-Putintersect(nm,pdata1,pdata2):=(
-//help:Putintersect("Q","gr1","gr2");
- regional(pd1,pd2,tmp);
- if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
- if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
- tmp=Intersectcrvs(pd1,pd2);
- if(length(tmp)==1,
- Putpoint(nm,tmp_1);
- ,
- if(length(tmp)==0,
- err("No intersect point");
- ,
- err("Multiple intersect points");
- println(tmp);
- err("Choose point number");
- );
- );
-);
-Putintersect(nm,pdata1,pdata2,ptno):=(
- regional(pd1,pd2,tmp);
- if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
- if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
- tmp=Intersectcrvs(pd1,pd2);
- if(length(tmp)>0,
- Putpoint(nm,tmp_ptno);
- ,
- err("No intersect point");
- );
-);
-
-Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
-Arrowheaddata(point,direction,options):=(
-//help:Arrowheaddata(A,B);
- regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
- pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
- Eps=10^(-3);
- pP=point;
- Ookisa=0.2*YaSize;
- Hiraki=YaAngle;
- Futosa=0;
- Str=YaStyle;
- tmp=Divoptions(options);
- tmp1=tmp_6;
- if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
- if(length(tmp1)>1,
- tmp=tmp1_2;
- if(tmp<5,
- Hiraki=Hiraki*tmp;
- ,
- Hiraki=tmp;
- );
- );
- Flg=0;
- Hiraki=Hiraki*pi/180;
- if(isstring(direction),Houkou=parse(direction),Houkou=direction);
- if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
- if(islist(Houkou_1),
-// pP=Lcrd(pP);
-// pP=Doscaling(pP);
-// Houkou=Dosscaling(Houkou);
- pP=Pcrd(pP);
- scy=SCALEY;
- SCALEY=1;
- tmp=Nearestpt(pP,Houkou);
- pA=tmp_1;
- rF=floor(tmp_2);
- if(rF==1,
- if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
- rF=Numptcrv(Houkou);
- );
- );
- gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
- Flg=0;
- forall(1..rF,Nj,
- if(Flg==0,
- pB=Ptcrv(rF+1-Nj,Houkou);
- tmp=IntersectcrvsPp([pA,pB],gG);
- if(length(tmp)>0,
- Houkou=pP-tmp_1_1;
- Flg=1;
- );
- pA=pB;
- );
- );
- SCALEY=scy;
- if(Flg==0,
- println("Arrowhead may be too large (no intersect)");
- Flg=2;
- );
- if(Flg==1,
- Houkou=Unscaling(Houkou);
- pP=Unscaling(pP);
- );
- );
- if(Flg<2,
-// pP=Doscaling(pP);
-// Houkou=Doscaling(Houkou);
- pP=Pcrd(pP);
- if(!ispoint(point),
- Houkou=Pcrd(Houkou);
- );
-// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
- Ev=-1/|Houkou|*Houkou;
- Ev=Lcrd(Ev);
- Nv=[-Ev_2, Ev_1];
- if(indexof(Str,"c")>0,
- pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
- );
- if(indexof(Str,"b")>0,
- pP=pP-Ookisa*cos(Hiraki)*Ev;
- );
- pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
- pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
- list=[pA,pP,pB];
- list=apply(list,LLcrd(#));
-// Out=Unscaling(Out);
- list;
- );
-);
-
-Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
-Arrowhead(point,Houkou,options):=(
-//help:Arrowhead(B,B-A,[1.5,30]);
-//help:Arrowhead(A,"gr1");
- // global ArrowheadNumber
- regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
- name="arh"+text(ArrowheadNumber);
- ArrowheadNumber=ArrowheadNumber+1;
- ptstr=textformat(point,5);
- if(isstring(Houkou), // 15.01.11
- tmp=parse(Houkou);
- if(MeasureDepth(tmp)<2,
- hostr=Houkou;
- ,
- hostr=Houkou+"(1)";
- );
- ,
- if(ispoint(point),
- hostr=textformat(LLcrd(Houkou),5);
- ,
- hostr=textformat(Houkou,5);
- );
- );
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- reL=tmp_6;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- list=Arrowheaddata(point,Houkou,options);
- if(Noflg<3,
-// println("generate Arrowhead "+name);
- tmp1=apply(list,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
-// GLIST=append(GLIST,name+"=Listplot("+list+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(1)+Ltype,name);
- ,
-// if(Noflg==1,Ltype=0);
- Ltype=0;
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- if(Noflg==0,
- if(length(reL)<3, // 16.04.09 from
- forall(1..(2-length(reL)),
- opstr=opstr+",1";
- );
- tmp=PenThick/PenThickInit;
- opstr=opstr+","+text(tmp);
- ); // 16.04.09 upto
- Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
- );
-);
-
-Arrowdata(ptlist):=Arrowdata(ptlist,[]);
-Arrowdata(Arg1,Arg2):=(
- regional(tmp,nm,ptlist,flg,pA,pB,options);
- flg=0;
- if(isstring(Arg1),
- nm=Arg1;
- ptlist=Arg2;
- Arrowdata(nm,ptlist,[]);
- flg=1;
- );
- if(flg==0,
- tmp=MeasureDepth(Arg1);
- if(tmp==0,
- pA=Arg1;
- pB=Arg2;
- Arrowdata(pA,pB,[]);
- ,
- ptlist=Arg1;
- options=Arg2;
- nm=text(ArrowlineNumber);
- ArrowlineNumber=ArrowlineNumber+1;
- Arrowdata(nm,ptlist,options);
- );
- );
-);
-Arrowdata(Arg1,Arg2,options):=(
-//help:Arrowdata([A,B],[2,10]);
- regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
- flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
- Retflg=0;
- Noflg=0;
- Ltype=0;
- if(!isstring(Arg1),
- pA=Arg1;
- pB=Arg2;
- Arrowdata(pA,pB,options,"old");
- Retflg=1;
- ptlist=[pA,pB];
- );
- if(Retflg==0,
- nm=Arg1;
- ptlist=Arg2;
- name="ar"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- realL=tmp_6;
- strL=tmp_7;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- size=1; // 15.06.11
- if(length(realL)>0,
- size=realL_1;
- );
- tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
- if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
- segpos=1;
- tmp1=tmp_5;
- if(length(tmp1)>2,
- segpos=tmp1_3;
- );
- if(Noflg<3,
-// println("generate Arrowdata "+name);
- tmp1=apply(ptlist,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=Lcrd(ptlist_1);//16.10.10
- tmp2=Lcrd(ptlist_2);//16.10.10
- if(lineflg==0, // 16.04.09 from
- tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
- ,
- tmp=tmp2;
- ); // 16.04.09 upto
- tmp=[tmp1,tmp];
- GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- tmp=textformat(ptlist,5);
- tmp=substring(tmp,1,length(tmp)-1);
- tmp1=indexof(tmp,"],[");
- if(tmp1>0,
- pA=substring(tmp,0,tmp1);
- pB=substring(tmp,tmp1+1,length(tmp));
- ,
- tmp1=indexof(tmp,",");
- pA=substring(tmp,0,tmp1-1);
- pB=substring(tmp,tmp1,length(tmp));
- );
- tmp1="Lcrd("+pA+")+"
- +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
- tmp1=parse(tmp1);
- tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
- tmp2=parse(tmp2);
- Arrowhead(tmp1,tmp2,options);
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- );
- ptlist;
-);
-Arrowdata(pA,pB,options,str):=(
- regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
- Astr=textformat(pA,5);
- Bstr=textformat(pB,5);
- name="ar"+pA.name+pB.name;
- println("generate Arrow "+name);
- opstr="";
- opcindy="";
- forall(options,
- if(isstring(#),
- if(indexof(#,"->")>0,
- opcindy=opcindy+","+#;
- ,
- tmp="'"+#+"'";
- );
- ,
- tmp=text(#);
- );
- opstr=opstr+","+tmp;
- );
- ptA=Lcrd(pA);
- ptB=Lcrd(pB);
- Arrowheaddata(ptB,ptB-ptA,options);
- tmp="connect("+textformat([ptA,ptB],5)
- +",linecolor->"+text(KCOLOR)+opcindy+");";
- parse(tmp); // 14.11.17
- Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
-);
-
-Anglemark(plist):=Anglemark(plist,[]);
-Anglemark(Arg1,Arg2):=( // 2015.04.28 from
- regional(nm,plist,options,tmp);
- if(isstring(Arg1),
- nm=Arg1;
- plist=Arg2;
- Anglemark(nm,plist,[]);
- ,
- plist=Arg1;
- options=Arg2;
- tmp=textformat(plist,5);
- tmp=replace(tmp,",","");
- nm=substring(tmp,1,length(tmp)-1);
- Anglemark(nm,plist,options);
- );
-); // upto
-Anglemark(nm,plist,options):=(
-//help:Anglemark([A,B,C],["E=\theta",2]);
-//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
- regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
- Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
- name="ag"+nm;
- ra=0.5;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- realL=tmp_6;
- Bname="";
- Brat=1.5;
- Num=20;
- if(length(realL)>0,
- ra=realL_1*ra;
- opstr=opstr+","+text(realL_1);
- );
- forall(eqL,
- if(substring(#,0,1)=="L",Bname="Letter(");
- if(substring(#,0,1)=="E",Bname="Expr(");
- Bpos="md"+name;
- Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
- tmp=substring(#,indexof(#,"="),length(#));
- tmp1=indexof(tmp,",");
- Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
- if(tmp1>0,
- Brat=parse(substring(tmp,0,tmp1-1));
- );
- );
- pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
- Ctr=Lcrd(pA);
- sab=pB-pA;
- sac=pC-pA;
- Rg=[arctan2(sab)+0,arctan2(sac)+0];
- if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
- Out=[];
- forall(0..Num,
- Th=Rg_1+#*(Rg_2-Rg_1)/Num;
- Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
- );
- if(length(Bname)>0,
- Th=(Rg_1+Rg_2)/2;
- tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
- tmp="Defvar("+Dq+Bpos+"=";
- tmp=tmp+textformat(tmp1,5)+Dq+");";
- parse(tmp);
- parse(Bname);
- );
- if(Noflg<3,
- println("generate anglemark "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp=textformat(plist,5);
- tmp1=substring(tmp,1,length(tmp)-1);
- tmp=name+"=Anglemark("+tmp1+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-
-Paramark(plist):=Paramark(plist,[]);
-Paramark(plist,options):=(
-//help:Paramark([A,B,C],["E=\theta"]);
- regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
- Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
- tmp=textformat(plist,5);
- tmp=replace(tmp,",","");
- tmp=substring(tmp,1,length(tmp)-1);
- name="pm"+tmp;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- realL=tmp_6;
- ra=0.5;
- Bname="";
- Brat=1.2;
- if(length(realL)>0,
- tmp=realL_1;
- ra=tmp*ra;
- opstr=opstr+","+text(tmp);
- );
- forall(eqL,
- if(substring(#,0,1)=="L",Bname="Letter(");
- if(substring(#,0,1)=="E",Bname="Expr(");
- Bpos="md"+name;
- Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
- tmp=substring(#,indexof(#,"="),length(#));
- tmp1=indexof(tmp,",");
- Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
- if(tmp1>0,
- Brat=parse(substring(tmp,0,tmp1-1));
- );
- );
- pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
- Ctr=Lcrd(pA);
- Out=[];
- Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
- Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
- Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
- if(length(Bname)>0,
- tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
- tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
- parse(tmp);
- parse(Bname);
- );
- if(Noflg<3,
- println("generate paramark "+name);
- tmp1=apply(Out,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
- tmp=name+"=Paramark("+tmp1+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- Out;
-);
-
-MakeBowdata(pA,pB,Hgt):=(
- regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
- angle=arctan2(pB-pA)+0;
- pB2=Rotatepoint(pB,-angle,pA);
- tmp=Lcrd(pA);
- pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
- dMA=|tmp-pB2|/2;
- ra=(dMA^2+Hgt^2)/(2*Hgt);
- pC2=[pH2_1,pB2_2+(ra-Hgt)];
- pC=Rotatepoint(pC2,angle,pA);
- Th1=arctan2(pA-pC2)+angle;
- Th2=arctan2(pB2-pC2)+angle;
- [pC,ra,Th1,Th2];
-);
-
-Bowdata(plist):=Bowdata(plist,[]);
-Bowdata(plist,options):=(
- regional(nm,tmp);
- tmp=textformat(plist,5);
- tmp=replace(tmp,",","");
- nm=substring(tmp,1,length(tmp)-1);
- Bowdata(nm,plist,options);
-);
-Bowdata(nm,plist,options):=(
-//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
- regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
- Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
- Th1,Th2,Noflg,Bops);
- name="bw"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- eqL=tmp_5;
- realL=tmp_6;
- pA=Lcrd(plist_1); pB=Lcrd(plist_2);
- Hgt=1/2*|pB-pA|*0.2;
- Cut=0;
- Num=24;
- Bname="";
- if(length(realL)>0,
- Hgt=realL_1*Hgt; // 15.04.12
- if(length(realL)>1,Cut=realL_2);
- );
- forall(eqL,
- tmp=substring(#,0,1);
- if(tmp=="L" % tmp=="l",
- if(indexof(#,"rot")>0,
- Bname="Letterrot(";
- ,
- Bname="Letter(";
- );
- );
- if(tmp=="E" % tmp=="e",
- if(indexof(#,"rot")>0,
- Bname="Exprrot(";
- ,
- Bname="Expr(";
- );
- );
- Bops=#;
- );
- Ydata=MakeBowdata(pA,pB,Hgt);
- pC=Ydata_1;
- ra=Ydata_2;
- Th=(Ydata_3+Ydata_4)*0.5;
- BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
- if(length(Bname)>0,
- Bpos="md"+name;
- tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
- parse(tmp);
- Bname=Bname+Dq+Bpos+Dq+",";
- if(indexof(Bname,"rot")>0,
- tmp1=pB-pA;
- if(tmp1_1<0, tmp1=-tmp1);
- tmp2=indexof(Bops,",");
- if(tmp2>0,
- tmp=substring(Bops,0,tmp2-1);
- if(indexof(tmp,"u")>0,
- tmp1=-tmp1;
- Bops=replace(tmp,"u","")+substring(Bops,tmp2-1,length(Bops));
- Bops=replace(Bops,"=,","=");
- );
- );
- Bname=Bname+text(tmp1)+",";
- );
- tmp=substring(Bops,indexof(Bops,"="),length(Bops));
- tmp1=indexof(tmp,",");
- if(tmp1==0,
- if(indexof(Bname,"rot")==0,
- Bname=Bname+Dq+"c"+Dq+","+Dq+tmp;
- ,
- Bname=Bname+Dq+tmp;
- );
- ,
- Bname=Bname+Dq+substring(tmp,0,tmp1-1)+Dq+","
- +Dq+substring(tmp,tmp1,length(tmp));
- );
- Bname=Bname+Dq+")";
- parse(Bname);
- );
- if(Cut==0,
- Th1=Ydata_3;
- Th2=Ydata_4;
- Out=[];
- forall(0..Num,
- tmp=Th1+#*(Th2-Th1)/Num;
- Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
- );
- ,
- Th1=Ydata_3;
- Th2=Th-Cut/(2*ra);
- tmp1=[];
- forall(0..Num/2,
- tmp=Th1+#*(Th2-Th1)/(Num/2);
- tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
- );
- Th1=Th+Cut/(2*ra);
- Th2=Ydata_4;
- tmp2=[];
- forall(0..Num/2,
- tmp=Th1+#*(Th2-Th1)/(Num/2);
- tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
- );
- Out=[tmp1,tmp2];
- );
- if(Noflg<3,
- println("generate bowdata "+name);
- if(MeasureDepth(Out)==1,Out=[Out]);
- tmp1=[];
- forall(Out,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
- tmp=name+"=Bowdata("+tmp1+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
-);
-
-Bowname(str):=Bowname("c",str);
-Bowname(dir,str):=(
- Expr([BOWMIDDLE,dir,str]);
-);
-
-Bownamerot(bwdata,str):=Bownamerot(bwdata,0,0,str,1);
-Bownamerot(bwdata,str,updown):=Bownamerot(bwdata,0,0,str,updown);
-Bownamerot(bwdata,tmov,nmov,str):=Bownamerot(bwdata,tmov,nmov,str,1);
-Bownamerot(bwdata,tmov,nmov,str,updown):=(
- regional(bdata,tmp);
- tmp=MeasureDepth(bwdata);
- if(tmp==1,bdata=[bwdata],bdata=bwdata);
- if(length(bdata)>1,
- tmp=Ptend(bdata_2)-Ptstart(bdata_1);
- ,
- tmp=Ptend(bdata_1)-Ptstart(bdata_1);
- );
- if(updown<0,tmp=-tmp);
- Exprrot(BOWMIDDLE,tmp,tmov,nmov,str);
-);
-
-Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
-Deqplot(nm,deq,rng,Arg1,Arg2):=(
- regional(initt,initf,options);
- if(isreal(Arg1) & length(Arg1)==1,
- initt=Arg1;
- initf=Arg2;
- options=[];
- ,
- initf=Lcrd(Arg1);
- initt=initf_1;
- options=Arg2;
- );
- Deqplot(nm,deq,rng,initt,initf,options);
-);
-Deqplot(nm,deq,rng,initt,initf,options):=(
- regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
- tmp,tmp1,tmp2,tmp3,tmp4);
- tmp=tokenize(deq,"=");
- tmp1=tmp_1;
- tmp2=tmp_2;
- tmp3=tokenize(tmp1,"`");
- if(length(tmp3)==2,
- if(indexof(tmp1,"[")>0,
- Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
- ,
- if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
- tmp=tokenize(rng2,"=");
- deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
- rng2="t="+tmp_2;
- if(isreal(initf) & length(initf)==1,
- initf2=[initt,initf];
- initt2=initt;
- ,
- initf2=Lcrd(initf));
- initt2=initf2_1;
- Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
- );
- ,
- name="de"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- eqL=tmp_5;
- opcindy=tmp_9;
- opstr="";
- forall(eqL,
- if(Toupper(substring(#,0,1))=="N",
- tmp=indexof(#,"=");
- tmp1="N="+substring(#,tmp,length(#));
- opstr=opstr+",'"+tmp1+"'";
- );
- );
- if(Noflg<1,
- if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
- var2="d"+tmp3_1;
- deq2="["+tmp3_1+","+var2+"]`=[";
- tmp=replace(tmp2,tmp3_1+"`",var2);
- deq2=deq2+var2+","+tmp+"]";
- Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
- parse(tmp);
- tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
- tmp=tmp+initt+","+initf+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- parse("de"+nm);
- );
- );
-);
-Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
-//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
-//help:Deqplot("1","y``=-y","x",0, [1,0]);
-//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
- regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
- outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
- kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
- name="de"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- Inflg=tmp_3;
- Outflg=tmp_4;
- eqL=tmp_5;
- strL=tmp_7;
-// opstr=tmp_(length(tmp)-1);
- opstr="";
- opcindy=tmp_(length(tmp));
- outstr="";
- forall(strL,
- tmp=Toupper(substring(#,0,1));
- if(tmp=="S",
- outstr="Sci";
- );
- );
- Num=50;
- forall(eqL,
- tmp=indexof(#,"=");
- tmp2=substring(#,0,1);
- tmp2=Toupper(tmp2);
- tmp1=substring(#,tmp,length(#));
- opstr=opstr+",'"+tmp2+"="+tmp1+"'";
- if(Toupper(substring(#,0,1))=="N",
- Num=parse(tmp1);
- );
- );
- if(outstr=="Sci",
- if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
- );
- if(Noflg<3,
- if(outstr=="Sci",
- if(Outflg==1,
- println("Output Deqplot "+name);
- SCIWRLIST=append(SCIWRLIST,name);
- );
- if(Inflg==1,
- println("Input Deqplot "+name);
- if(length(SCIRELIST)==0,
- ReadOutData(Fnameout);
- );
- tmp=parse(name);
- if(islist(tmp),
- Extractdata(name,["nodisp"]); // 12.19
- );
- SCIRELIST=append(SCIRELIST,name);
- );
- ,
- Eps=10^(-3);
- Inf=10^3;
- tmp=tokenize(deq,"=");
- tmp1=tmp_1;
- func=tmp_2;
- tmp=indexof(tmp1,",");
- xf=substring(tmp1,1,tmp-1);
- yf=substring(tmp1,tmp,length(tmp1));
- tmp=indexof(yf,"]");
- yf=substring(yf,0,tmp-1);
- tmp=tokenize(rng,"=");
- Vname=tmp_1;
- tmp=parse(tmp_2);
- t1=tmp_1;
- t2=tmp_2;
- tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
- parse(tmp);
- tmp=tokenize(func,",");
- tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
- tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
- tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
- parse(tmp);
- dt=(t2-t1)/Num;
- tt=initt;
- tmp=Lcrd(initf);
- x0=tmp_1;
- y0=tmp_2;
- pdL=[[tt,x0,y0]];
- flg=0;
- forall(1..floor((t2-initt)/dt),
- if(flg==0,
- kl1=dt*funP(tt,x0,y0);
- kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
- kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
- kl4=dt*funP(tt+dt,x0+kl3_1,y0+kl3_2);//16.10.14
- tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
- x0=tmp1_1;
- y0=tmp1_2;
- tt=initt+#*dt;
- pdL=append(pdL,[tt,x0,y0]);
- if(|tmp1|>Inf,flg=1);
- );
- );
- tt=initt;
- tmp=Lcrd(initf);
- x0=tmp_1;
- y0=tmp_2;
- flg=0;
- forall(1..floor((initt-t1)/dt),
- if(flg==0,
- kl1=dt*funN(tt,x0,y0);
- kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
- kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
- kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
- tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
- x0=tmp1_1;
- y0=tmp1_2;
- tt=initt-#*dt;
- pdL=prepend([tt,x0,y0],pdL);
- if(|tmp1|>Inf,flg=1);
- );
- );
- println("Generate Deqplot "+name);
- pdL=apply(pdL,#_Sel);
- tmp1=apply(pdL,Pcrd(#));
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- );
- if(Noflg<1,
- tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
- tmp=tmp+initt+","+initf+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- if(outstr=="Sci",
- if(Inflg==1,
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- ,
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- pdL;
- );
- );
-);
-
-Enclosing(nm,plist):=EnclosingS(nm,plist);
-Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
-EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
-EnclosingS(nm,plist,options):=(
-//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
- regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
- t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
- name="en"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- eqL=tmp_5;
- realL=tmp_6;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- Eps=10^(-3);
- EEps=0.1;
- Start=[];
- Flg=0;
- forall(realL,
- if(isList(#) % ispoint(#),
- Start=Lcrd(#); // 15.09.12
- ,
- Flg=Flg+1;
- if(Flg==1,Eps=#);
- if(Flg==2,EEps=#);
- );
- );
-// tmp1=concat([Eps,EEps],eqL); // 15.04.06
- Fdata=plist_1;
- Gdata=plist_(length(plist));
- KL=IntersectcrvsPp(Fdata,Gdata);
- if(length(KL)==1,
- pt=KL_1_1;
- t1=KL_1_2;
- );
- if(length(KL)==0,
- if(Numptcrv(Fdata)>Numptcrv(Gdata),
- tmp=Nearestpt(Fdata,Gdata);
- pt=tmp_1;
- t1=tmp_2;
- ,
- tmp=Nearestpt(Gdata,Fdata);
- pt=tmp_3;
- t1=tmp_4;
- );
- );
- if(length(KL)>1,
- if(Start==[],
- err("No Start Point");
- ,
- pt=KL_1_1;
- t1=KL_1_2;
- tmp=|pt-Start|;
- forall(2..length(KL),ii, // 15.04.20
- tmp1=KL_ii_1;
- tmp2=|tmp1-Start|; // 15.04.20
- if(tmp2<tmp,
- pt=tmp1;
- t1=KL_ii_2;
- tmp=tmp2;
- );
- );
- );
- );
-// pt=Pcrd(pt); // 15.09.12
- Start=pt;
- AnsL=[];
- forall(1..length(plist),nn,
- Fdata=plist_nn;
- if(nn>1, pt=qt);
- if(nn==length(plist),
- qt=Start;
- ,
- Flg=0;
- Gdata=plist_(nn+1);
-// tmp1=concat([Eps,EEps],eqL); // 15.04.06
- KL=IntersectcrvsPp(Gdata,Fdata);
- if(length(KL)==1,
- tmp=KL_1;
- qt=KL_1_1;
- t3=KL_1_2;
- Flg=10;
- );
- if(length(KL)==0,Flg=1);
- if(length(KL)>1,
- tmp1=KL_1_1;
- tmp2=KL_2_1;
- tmp=|tmp1-tmp2|;
- if(tmp<Eps*10, Flg=1);
- );
- if(Flg==1,
- if(Numptcrv(Fdata)>Numptcrv(Gdata),
- tmp=Nearestpt(Fdata,Gdata);
- qt=tmp_1;
- t3=tmp_4;
- Flg=10;
- ,
- tmp=Nearestpt(Gdata,Fdata);
- qt=tmp_3;
- t3=tmp_2;
- Flg=10;
- );
- );
- if(Flg<10,
- t2=10^6; //%inf;
- forall(1..length(KL),ii,
- tmp1=KL_ii_1;
- tmp=KL_ii_3;
- tmp2=ParamonCurve(tmp1,tmp,Fdata);
- tmp3=KL_ii_2;
- if(tmp2>t1+Eps & tmp2<t2+Eps,
- qt=tmp1;
- t2=tmp2;
- t3=tmp3;
- );
- );
- );
- );
- tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
- t1=t3;
- if(nn==1,
- AnsL=tmp;
- ,
- AnsL=concat(AnsL,tmp_(2..length(tmp)));
- );
- );
- AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
- if(Noflg<3,
- println("generate Enclosing "+name);
- tmp=name+"="+textformat(AnsL,5);
- parse(tmp);
- tmp=name+"=Enclosing(";
- tmp1="list(";
- forall(plist,
- tmp1=tmp1+#+",";
- );
- tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- tmp=apply(AnsL,Lcrd(#));
- tmp;
-);
-
-Shade(plist):=Shade(plist,[]);
-Shade(plist,options):=(
-//help:Shade(["gr2","sg1"],[0.5]);
-//help:Shade([pointlist],[0.5]);
- regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
- if(isstring(plist_1), // 16.01.24
- println("output Shade of "+plist);
- ,
- println("output Shade of lists");
- );
- tmp=Divoptions(options);
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- flg=0;
- forall(plist,
- if(flg==0,
- if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
- if(!islist(tmp),flg=1); upto
- );
- );
- if(flg==1,
-// err("some data not defined yet");
- ,
- G2=Joincrvs("1",plist,["nodata"]);
- G2=apply(G2,Pcrd(#));
- tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
- parse(tmp1);
- );
- Str="Shade(";
- tmp1="list(";
- forall(plist,
- if(isstring(#), // from 16.01.24
- if(length(#)>1,
- tmp1=tmp1+#+",";
- ,
- tmp1=tmp1+Dq+#+Dq+",";
- );
- ,
- tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
- ); // upto 16.01.24
- );
- Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
- Com2nd(Str);
-);
-
-
-//help:start();
-
-Rotatepoint(point,Theta,ctr):=(
-//help:Rotatepoint(A,2*pi/3,B);
- regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
- tmp=Lcrd(point);
- X1=tmp_1; Y1=tmp_2;
- tmp=Lcrd(ctr);
- Cx=tmp_1; Cy=tmp_2;
- X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
- Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
- [X2,Y2];
-);
-
-Translatepoint(point,mov):=(
-//help:Translatepoint(A,[2,3]);
- regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
- tmp=Lcrd(point);
- X1=tmp_1; Y1=tmp_2;
- tmp=Lcrd(mov);
- Cx=tmp_1; Cy=tmp_2;
- X2=X1+Cx;
- Y2=Y1+Cy;
- [X2,Y2];
-);
-
-Scalepoint(point,ratio,center):=(
-//help:Scalepoint(A,[3,2],[0,0]);
- regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
- tmp=Lcrd(point);
- X1=tmp_1; Y1=tmp_2;
- tmp=Lcrd(center);
- Cx=tmp_1; Cy=tmp_2;
- X2=Cx+ratio_1*(X1-Cx);
- Y2=Cy+ratio_2*(Y1-Cy);
- [X2,Y2];
-);
-
-Reflectpoint(point,symL):=(
-//help:Reflectpoint(A,B);
-//help:Reflectpoint(A,[[2,3]]);
-//help:Reflectpoint(A,[C,E]);\\
- regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
- tmp=Lcrd(point);
- X1=tmp_1; Y1=tmp_2;
- Pt1=Lcrd(symL_1);
- if(length(symL)==1,
- Pt2=Pt1;
- ,
- Pt2=Lcrd(symL_2);
- );
- Us=Pt2_1-Pt1_1;
- Vs=Pt2_2-Pt1_2;
- if(Pt1==Pt2,
- X2=2*Pt1_1-X1;
- Y2=2*Pt1_2-Y1;
- ,
- X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
- -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
- Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
- +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
- );
- [X2,Y2];
-);
-
-Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
-Rotatedata(nm,plist,angle,options):=(
-//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
- regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
- opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
- name="rt"+nm;
- Pt=[0,0];
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- tmp1=tmp_6;
- if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
- pdata=plist;
- if(isstring(pdata),pdata=[pdata]);
- if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
- pdata=[pdata];
- );
- if(isstring(angle),Theta=parse(angle),Theta=angle);
- Cx=Pt_1; Cy=Pt_2;
- PdL=[];
- forall(pdata,Njj,
- if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
- if(MeasureDepth(Kj)==1,Kj=[Kj]);
- tmp2=[];
- forall(Kj,Nj,
- tmp1=[];
- forall(Nj,
- tmp=LLcrd(#);
- X1=tmp_1;
- Y1=tmp_2;
- X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
- Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
- tmp1=concat(tmp1,[[X2,Y2]]);
- );
- tmp2=concat(tmp2,[tmp1]);
- );
- PdL=concat(PdL,tmp2);
- );
- if(Noflg<3,
- println("generate Rotatedata "+name);
- tmp1=[];
- forall(PdL,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- if(length(tmp1)==1,tmp1=tmp1_1);
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
-// tmp1=textformat(plist,5);
- tmp1=text(plist); // 15.10.15
- tmp1=replace(tmp1,"[","list(");
- tmp1=replace(tmp1,"]",")");
- tmp=name+"=Rotatedata("+tmp1+","
- +textformat(angle,5)+","+textformat(Pt,5)+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PdL;
-);
-
-translatedata(nm,plist,mov):=translatedata(nm,plist,mov,[]);
-translatedata(nm,plist,mov,options):=(
-//help:translatedata("1",["gr1"],[1,2]);
- regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
- opcindy,X2,Y2,Ltype,Noflg,name);
- name="tr"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- pdata=plist;
- if(isstring(pdata),pdata=[pdata]);
- if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
- pdata=[pdata];
- );
- tmp=Lcrd(mov);
- Cx=tmp_1; Cy=tmp_2;
- PdL=[];
- forall(pdata,Njj,
- if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
- if(MeasureDepth(Kj)==1,Kj=[Kj]);
- tmp2=[];
- forall(Kj,Nj,
- tmp1=[];
- forall(Nj,
- tmp=LLcrd(#);
- X2=tmp_1+Cx;
- Y2=tmp_2+Cy;
- tmp1=concat(tmp1,[[X2,Y2]]);
- );
- tmp2=concat(tmp2,[tmp1]);
- );
- PdL=concat(PdL,tmp2);
- );
- if(Noflg<3,
- println("generate translatedata "+name);
- tmp1=[];
- forall(PdL,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- if(length(tmp1)==1,tmp1=tmp1_1);
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
-// tmp1=textformat(plist,5);
- tmp1=text(plist); // 15.10.15
- tmp1=replace(tmp1,"[","list(");
- tmp1=replace(tmp1,"]",")");
- tmp=name+"=translatedata("+tmp1+","+textformat(mov,5)+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PdL;
-);
-
-Scaledata(nm,plist,ratioV):=(
- regional(tmp);
- tmp=Lcrd(ratioV);
- Scaledata(nm,plist,tmp_1,tmp_2,[]);
-);
-Scaledata(nm,plist,Arg1,Arg2):=(
-//help:Scaledata("1","crAB",3,2,[[0,0]]);
- regional(tmp,options);
- if(islist(Arg2),
- tmp=Lcrd(Arg1);
- options=Arg2;
- Scaledata(nm,plist,tmp_1,tmp_2,options);
- ,
- Scaledata(nm,plist,Arg1,Arg2,[]);
- );
-);
-Scaledata(nm,plist,rx,ry,options):=(
- regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
- opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
- name="sc"+nm;
- Pt=[0,0];
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- tmp1=tmp_6;
- if(length(tmp1)>0,
- Pt=Lcrd(tmp1_1);
- );
- pdata=plist;
- if(isstring(pdata),pdata=[pdata]);
- if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
- pdata=[pdata];
- );
- Cx=Pt_1; Cy=Pt_2;
- PdL=[];
- forall(pdata,Njj,
- if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
- if(MeasureDepth(Kj)==1,Kj=[Kj]);
- tmp2=[];
- forall(Kj,Nj,
- tmp1=[];
- forall(Nj,
- tmp=LLcrd(#);
- X2=Cx+rx*(tmp_1-Cx);
- Y2=Cy+ry*(tmp_2-Cy);
- tmp1=concat(tmp1,[[X2,Y2]]);
- );
- tmp2=concat(tmp2,[tmp1]);
- );
- PdL=concat(PdL,tmp2);
- );
- if(Noflg<3,
- println("generate Scaledata "+name);
- tmp1=[];
- forall(PdL,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- if(length(tmp1)==1,tmp1=tmp1_1);
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
- tmp1=text(plist); // 15.10.15
- tmp1=replace(tmp1,"[","list(");
- tmp1=replace(tmp1,"]",")");
- tmp=name+"=Scaledata("+tmp1+","
- +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PdL;
-);
-
-Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
-Reflectdata(nm,plist,symL,options):=(
-//help:Reflectdata("1","crAB",[C]);
- regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
- opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
- name="re"+nm;
- Pt=[0,0];
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opcindy=tmp_(length(tmp));
- pdata=plist;
- if(isstring(pdata),pdata=[pdata]);
- if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
- pdata=[pdata];
- );
- Pt1=Lcrd(symL_1);
- if(length(symL)==1,
- Pt2=Pt1;
- ,
- Pt2=Lcrd(symL_2);
- );
- Us=Pt2_1-Pt1_1;
- Vs=Pt2_2-Pt1_2;
- PdL=[];
- forall(pdata,Njj,
- if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
- if(MeasureDepth(Kj)==1,Kj=[Kj]);
- tmp2=[];
- forall(Kj,Nj,
- tmp1=[];
- forall(Nj,
- tmp=LLcrd(#);
- X1=tmp_1;
- Y1=tmp_2;
- if(Pt1==Pt2,
- X2=2*Pt1_1-X1;
- Y2=2*Pt1_2-Y1;
- ,
- X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
- -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
- Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
- +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
- );
- tmp1=concat(tmp1,[[X2,Y2]]);
- );
- tmp2=concat(tmp2,[tmp1]);
- );
- PdL=concat(PdL,tmp2);
- );
- if(Noflg<3,
- println("generate Reflectdata "+name);
- tmp1=[];
- forall(PdL,tmp2,
- tmp=apply(tmp2,Pcrd(#));
- tmp1=append(tmp1,tmp);
- );
- if(length(tmp1)==1,tmp1=tmp1_1);
- tmp=name+"="+textformat(tmp1,5);
- parse(tmp);
-// tmp1=textformat(plist,5);
- tmp1=text(plist); // 15.10.15
- tmp1=replace(tmp1,"[","list(");
- tmp1=replace(tmp1,"]",")");
- tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
- GLIST=append(GLIST,tmp);
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- PdL;
-);
-
-Mksegments():=Mksegments([]);
-Mksegments(options):=(
-//help:Mksegments();
- regional(segstr,p,q,r,tmp1,tmp2,tmp3);
- forall(allsegments(),seg,
- str=text(inspect(seg,"definition"));
- tmp1=indexof(str,"(");
- tmp2=indexof(str,";");
- tmp3=indexof(str,")");
- p=substring(str,tmp1,tmp2-1);
- q=substring(str,tmp2,tmp3-1);
- Listplot([parse(p),parse(q)]);
- );
-);
-
-Mkcircles():=Mkcircles([]);
-Mkcircles(options):=(
-//help:Mkcircles():
- regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
- forall(allcircles(),cir,
- str=text(inspect(cir,"definition"));
- tmp1=indexof(str,"(");
- tmp2=indexof(str,";");
- tmp3=indexof(str,")");
- tmp4=indexof(str,";",tmp2+1);
- if(tmp4==0,
- p=substring(str,tmp1,tmp2-1);
- q=substring(str,tmp2,tmp3-1);
- Circledata([parse(p),parse(q)]);
- ,
- p=substring(str,tmp1,tmp2-1);
- q=substring(str,tmp2,tmp4-1);
- r=substring(str,tmp4,tmp3-1);
- Circledata([parse(p),parse(q),parse(r)]);
- );
- );
-);
-
-Makesciarg(arglist):=(
- regional(str,tmpstr);
- str="";
- forall(arglist,
- if(isstring(#),
- tmpstr=Dq+#+Dq;
- ,
- tmpstr=textformat(#,5);
- );
- str=str+tmpstr+",";
- );
- str=substring(str,0,length(str)-1);
- str;
-);
-
-Setax(arglist):=(
-//help:Setax(["l","x","e","y","n","O","sw"]);
-//help:Setax([7,"nw"]);
- regional(tmp);
- tmp=Makesciarg(arglist);
- Com1st("Setax("+tmp+")");
-);
-
-Htickmark(arglist):=(
-//help:Htickmark([1,"1",2,"sw","2"]);
- regional(tmp);
- tmp="";
- tmp=Makesciarg(arglist);
- Com2nd("Htickmark("+tmp+")");
-);
-
-Vtickmark(arglist):=(
-//help:Vtickmark([1,"1",2,"sw","2"]);
- regional(tmp);
- tmp=Makesciarg(arglist);
- Com2nd("Vtickmark("+tmp+")");
-);
-
-Drwxy():=(
-//help:Drwxy();
- Com2nd("Drwxy()");
- Addax(0); // 16.01.21
-);
-
-Drwpt(pstr):=Drawpoint(pstr);
-Drwpt(ptlist,nn):=( // 16.03.05 from
-//help:Drwpt(A);
-//help:Drwpt("[1,1],0");
-//help:Drwpt(A,0);
-//help:Drwpt([1,2],0);
- Drawpoint(ptlist,nn);
-);
-Drawpoint(pstr):=(
- if(isstring(pstr),
- println("Drwpt : "+pstr);
- Com2nd("Drwpt("+pstr+")");
- ,
- Drawpoint(pstr,1);
- );
-);
-Drawpoint(ptlistorg,nn):=(
- regional(ptlist,thick,tmp,tmp1);
- println("Drwpt : "+text(ptlistorg));
- if(islist(ptlistorg),
- if(MeasureDepth(ptlistorg)==1,
- ptlist=ptlistorg
- ,
- ptlist=[ptlistorg]
- );
- ,
- ptlist=[ptlistorg]
- );
- thick=PenThick/PenThickInit;// 16.04.09 from
- tmp1=max(TenSize/TenSizeInit,1)/8;
- Setpen(tmp1); // 16.04.09 upto
- forall(ptlist,
- tmp=textformat(#,5)+","+text(nn);
- Com2nd("Drwpt("+tmp+")"); // 16.04.09
- );
- Setpen(thick); // 16.04.09
-);// 16.03.05 upto
-
-Addax(param):=(
-//help:Addax(0);
- ADDAXES=text(param);
-);
-
-Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
-Expr(list):=Expr(list,[]);
-Expr(listorg,options):=( //16.10.09
-//help:Expr([A,"e","f(x)=x^2"]);
- regional(list,str,tmp,tmp1,tmp2);
- list=listorg;
- forall(1..round(length(list)/3),
- str=list_(3*#);
- if(!isstring(str),str=format(str,5));
- str="$"+str+"$";
- list_(3*#)=str;
- );
- Letter(list,options);
-);
-
-Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
-Letter(list):=Letter(list,[]);
-Letter(list,options):=(
-//help:Letter([C,"c","Graph of f(x)"]);
- regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
- opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
- tmp=Divoptions(options);
- Noflg=tmp_2;
- opL=select(options,indexof(#,"->")>0); //16.10.09from
- tmp=select(opL,indexof(#,"color"));
- size=12;
- clr=[0,0,0];
- bld=false;
- ita=false;
- aln="left";
- forall(opL,
- tmp=indexof(#,"->");
- tmp1=removespace(substring(#,0,tmp-1));
- tmp2=substring(#,tmp+1,length(#));
- if(tmp1=="size",sz=parse(tmp2));
- if(tmp1=="color",clr=parse(tmp2));
- if(tmp1=="bold",bld=parse(tmp2));
- if(tmp1=="ita",ita=parse(tmp2));
- );//16.10.09upto
- Off=-4;
- Dmv=8;
- Nj=1;
- while(Nj+2<=length(list),
-// Pos=textformat(list_Nj,5);
- Pos=list_Nj;
- Dir=list_(Nj+1);
- if(Dir=="s" % Dir=="n", Dir=Dir+"c");//16.10.08
- Str=list_(Nj+2);
- if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
- tmp=replace(Str,".xy","");
- tmp=replace(tmp,".x","(1)");
- Str=replace(tmp,".y","(2)");
- if(indexof(Str,"`")>0,
-// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
- tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
- ,
- tmp=Dq+","+Dq+Str+Dq+")";
- );
- if(Noflg==0,
- Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
- );
- if(Noflg<2,
- Xmv=0;//16.10.13
- Ymv=-4;
- if(indexof(Dir,"n")>0,
- Ymv=Dmv/2;
- );
- if(indexof(Dir,"s")>0,
- Ymv=-Dmv*3/2;//16.10.13
- );
- if(indexof(Dir,"e")>0,
- Xmv=Dmv/2;
- Off=0;
- aln="left";
- );
- if(indexof(Dir,"w")>0,
- Xmv=-Dmv/2;
- Off=0; // 16.09.30from
- aln="right";
- );
- if(indexof(Dir,"c")>0,
- Xmv=0;//16.10.13
- Off=0;
- if(Ymv==0,Ymv=-4);//16.10.08
- aln="mid"; // 16.09.30upto
- );
- drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
- size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
- );
- Nj=Nj+3;
- );
-);
-
-Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
-Letterrot(pt,dir,movstr,str):=(
-//help:Letterrot(C,B-A,"AB"):
-//help:Letterrot(C,B-A,0,5,"AB"):
-//help:Letterrot(C,B-A,"t0n5","AB"):
- regional(tmov,nmov,tmp,tmp1,tmp2);
- tmp1=indexof(movstr,"t");
- tmp2=indexof(movstr,"n");
- if(tmp1>0,
- if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
- tmov=parse(substring(movstr,tmp1,tmp));
- ,
- tmov=0;
- );
- if(tmp2>0,
- nmov=parse(substring(movstr,tmp2,length(movstr)));
- ,
- nmov=0;
- );
- Letterrot(pt,dir,tmov,nmov,str);
-);
-Letterrot(pt,dir,tmov,nmov,str):=(
- Letter([pt,"c",str],["notex"]);
- Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
-);
-
-Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
-Exprrot(pt,dir,movstr,str):=(
-//help:Exprrot(C,B-A,"d"):
-//help:Exprrot(C,B-A,0,5,"d"):
-//help:Exprrot(C,B-A,"t0n5","d"):
- regional(tmov,nmov,tmp,tmp1,tmp2);
- tmp1=indexof(movstr,"t");
- tmp2=indexof(movstr,"n");
- if(tmp1>0,
- if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
- tmov=parse(substring(movstr,tmp1,tmp));
- ,
- tmov=0;
- );
- if(tmp2>0,
- nmov=parse(substring(movstr,tmp2,length(movstr)));
- ,
- nmov=0;
- );
- Exprrot(pt,dir,tmov,nmov,str);
-);
-Exprrot(pt,dir,tmov,nmov,str):=(
- Expr([pt,"c",str],["notex"]);
- Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
-);
-
-Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
-Putpoint(name,Ptinit,Pt):=(
-//help:Putpoint("A",[1,2],[1,A.y]);
- regional(ptstr);
- ptstr=apply(allpoints(),#.name);
- if(!contains(ptstr,name),
- createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
- ,
- ptstr=name+".xy="+textformat(Pcrd(Pt),5);
- parse(ptstr);
- );
-);
-
-Bezierpt(t,ptlist,ctrlist):=(
- regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
- p0=ptlist_1;
- p3=ptlist_2;
- p1=ctrlist_1;
- if(length(ctrlist)==1,
- p2=p3;
- flg3=0;
- ,
- p2=ctrlist_2;
- flg3=1;
- );
- if(length(p0)<3, // 15.02.08
- p0=Lcrd(p0);
- p3=Lcrd(p3);
- p1=Lcrd(p1);
- p2=Lcrd(p2);
- );
- p4=(1-t)*p0+t*p1;
- p5=(1-t)*p1+t*p2;
- p6=(1-t)*p2+t*p3;
- p7=(1-t)*p4+t*p5;
- p8=(1-t)*p5+t*p6;
- p9=(1-t)*p7+t*p8;
- if(flg3==0,p7,p9);
-);
-
-Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
-Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
-Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
-Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
-BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
-BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
-//help:Bezier("1",[A,D],[B,C]);
-//help:Bezier(options=["Num=10"]);
- regional(name,Ltype,Noflg,opstr,opcindy,Num,
- ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
- name="bz"+nm;
- tmp=Divoptions(options);
- Ltype=tmp_1;
- Noflg=tmp_2;
- opstr=tmp_(length(tmp)-1);
- opcindy=tmp_(length(tmp));
- Num=10;
- tmp1=tmp_5;
- forall(tmp1, // 14.12.31
- if(substring(#,0,1)=="N",
- tmp2=indexof(#,"=");
- Num=parse(substring(#,tmp2,length(#)));
- opstr=opstr+","+Dq+#+Dq;
- );
- );
- ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
- ctrlist=[]; // 14.12.31
- if(length(ctrlistorg)==length(ptlist)-1,
- forall(ctrlistorg,tmp1,
- if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
- tmp=apply(tmp,Lcrd(#)); // 16.08.16
- ctrlist=append(ctrlist,tmp);
- );
- ,
- forall(1..(length(ptlist)-1),ii,
- tmp=ctrlistorg_((2*ii-1)..(2*ii));
- tmp=apply(tmp,Lcrd(#)); // 16.08.16
- ctrlist=append(ctrlist,tmp);
- );
- );
- if(!islist(Num),
- Num=apply(ctrlist,Num);
- );
- list=[];
- forall(1..(length(ptlist)-1),ii,
- tmp1=ptlist_(ii..(ii+1));
- tmp2=ctrlist_ii;
- if(ii==1,st=0,st=1);
- forall(st..Num_ii,
- tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
- list=append(list,tmp);
- );
- );
- if(Noflg<3,
- println("generate Bezier "+name);
- out=apply(list,Pcrd(#));
- tmp=name+"="+textformat(out,5);
- parse(tmp);
- tmp1=textformat(ptlist,5);
- tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
- tmp2=textformat(ctrlist,5);
- tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
- GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
- );
- if(Noflg<2,
- if(isstring(Ltype),
- Ltype=GetLinestyle(text(Noflg)+Ltype,name);
- ,
- if(Noflg==1,Ltype=0);
- );
- GCLIST=append(GCLIST,[name,Ltype,opcindy]);
- );
- list;
-);
-
-Readcsvsla(fname):=Readplotdigdata(fname,[]);
-Readcsvsla(fname,options):=Readplotdigdata(fname,options);
-Readplotdigdata(fname):=Readplotdigdata(fname,[]);
-Readplotdigdata(fname,options):=(
- regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
- tmp=Divoptions(options);
- tmp1=tmp_6;
- sc=1;//10;
- mv=[0,0];//[5,5];
- forall(tmp1,
- if(!islist(#),sc=#,mv=#);
- );
- if(indexof(fname,".")>0,
- tmp=load(fname);
- ,
- tmp=load(fname+".txt");
- );
- cmdall=tokenize(tmp,"//");
- dataL=[];
- forall(2..length(cmdall),ii,
- tmp1=parse("["+cmdall_ii+"]");
- dataL=append(dataL,tmp1);
- );
- if(length(dataL_(length(dataL)))<2,
- dataL=dataL_(1..(length(dataL)-1));
- );
- nd=length(dataL_1)/2;
- npt=length(dataL);
- ptdata=[];
- forall(1..nd,ii,
- tmp3=[];
- forall(1..npt,
- tmp1=dataL_#_(2*ii-1);
- tmp2=dataL_#_(2*ii);
- if(isreal(tmp1),
- tmp3=append(tmp3,[tmp1,tmp2]);
- );
- );
- ptdata=append(ptdata,tmp3);
- );
- tmp1=[];
- forall(ptdata,
- tmp=#/sc;
- tmp=translatedata("1",[tmp],-mv,["nodata"]);
- tmp1=append(tmp1,tmp);
- );
- ptdata=tmp1;
- ptdata;
-);
-
-Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
-Putbezierdata(name,ptL,options):=(
- regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
- tmp=Divoptions(options);
- psize=3;
- Deg=3;
- tmp1=tmp_5;
- forall(tmp1,
- if(substring(#,0,1)=="D",
- tmp=indexof(#,"=");
- Deg=parse(substring(#,tmp,length(#)));
- );
- if(substring(#,0,1)=="S",
- tmp=indexof(#,"=");
- psize=parse(substring(#,tmp,length(#)));
- );
- );
- pts=[];
- ctrs=[];
- forall(1..length(ptL),
- p2=ptL_#; // 16.08.16
- if(ispoint(p2),
- tmp1=text(p2);
- ,
- tmp1=name+text(#);
- Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
- );
- inspect(parse(tmp1),"ptsize",psize);
- pts=append(pts,parse(tmp1));
- inspect(parse(tmp1),"color",4);
- if(#>1,
- p1=Lcrd(ptL_(#-1)); // 16.08.16
- p2=Lcrd(ptL_#); // 16.08.16
- if(Deg==3,
- tmp=(2*p1+p2)/3;
- tmp1=name+"p"+text(#-1);
- Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
- inspect(parse(tmp1),"labeled",false); //15.01.22
- Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
- inspect(parse(tmp1),"ptsize",psize);
- inspect(parse(tmp1),"color",3);
- tmp=(p1+2*p2)/3;
- tmp2=name+"q"+text(#-1);
- Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
- inspect(parse(tmp2),"labeled",false); //15.01.22
- Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
- inspect(parse(tmp2),"ptsize",psize);
- inspect(parse(tmp2),"color",3);
- ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
- ,
- tmp=(p1+p2)/2;
- tmp1=name+"p"+text(#-1);
- Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
- inspect(parse(tmp1),"labeled",false); //15.01.22
- Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
- inspect(parse(tmp1),"ptsize",psize);
- inspect(parse(tmp1),"color",3);
- ctrs=append(ctrs,[parse(tmp1)]);
- );
- );
- );
- [pts,ctrs,name];
-);
-
-Bezierstart(n):=( // 2016.02.26
- BezierNumber=n;
-);
-
-Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
-Mkbezierptcrv(ptdata,options):=(
- //help:Mkbezierptcrv([A,B,C,D]);
- //help:Mkbezierptcrv([[A,B],[C,D]]);
- //help:Mkbezierptcrv(options=["Num=10"]);
- // global BezierNumber
- regional(ptlist,Out,tmp,tmp1,tmp2);
- if(isstring(ptdata),
- ptlist=Readcsvsla(ptdata,options);
- ,
- ptlist=ptdata;
- );
- if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
- Out=[];
- forall(1..length(ptlist),
- tmp=floor((BezierNumber-1)/26);// 15.02.23
- if(tmp==0,tmp="",tmp=text(tmp));
- tmp2=mod(BezierNumber,26);
- if(tmp2==0,tmp2=26);
- tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
- tmp2=Putbezierdata(tmp1,ptlist_#,options);
- Bezier(tmp2,options);
- BezierNumber=BezierNumber+1;
- Out=append(Out,tmp2_(1..2));
- );
- Out;
-);
-
-Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
-Mkbeziercrv(nm,ptctrL,options):=(
- //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
- regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
- if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
- forall(1..length(ptctrLL),
- name=nm+text(#);
- ptlist=ptctrLL_#_1;
- ctrlist=ptctrLL_#_2;
- Bezier(name,ptlist,ctrlist,options);
- );
-);
-
-Writebezier():=Writebezier(Fhead,"all");
-Writebezier(head):=Writebezier(head,"all");
-Writebezier(head,seL):=(
-//help:Writebezier(file);
-//help:Writebezier(file,"acd");
- regional(bz,dt,name,tmp,tmp1,tmp2);
- bz=select(GLIST,indexof(#,"=Bezier")>0);
- tmp1=[]; // 16.04.22from
- if(seL!="all",
- forall(1..length(seL),
- tmp=substring(seL,#-1,#);
- tmp=select(bz,indexof(#,"bz"+tmp)>0);
- tmp1=concat(tmp1,tmp);
- );
- bz=tmp1;// 16.04.22upto
- );
- dt=[head+"n",[[length(bz),0]]];
- forall(1..length(bz),
- tmp=indexof(bz_#,"=");
- name=substring(bz_#,0,tmp-1);
- tmp=indexof(bz_#,","+Dq);
- if(tmp>0,
- tmp1=substring(bz_#,0,tmp-1)+")";
- ,
- tmp1=bz_#;
- );
- tmp1=replace(tmp1,"Bezier(","[");
- tmp1=replace(tmp1,"list(","[");
- tmp1=replace(tmp1,")","]");
- tmp1=replace(tmp1,",",".xy,");
- tmp1=replace(tmp1,"]",".xy]");
- tmp1=replace(tmp1,".xy,[",",[");
- tmp1=replace(tmp1,"].xy","]");
- tmp1=replace(tmp1,name,head+text(#));
- parse(tmp1);
- tmp=parse(head+text(#)+"_1");
- dt=concat(dt,[head+text(#)+"k",tmp]);
- tmp=parse(head+text(#)+"_2");
- dt=concat(dt,[head+text(#)+"c",tmp]);
- );
- WriteOutData(head+".txt",dt);
- dt;
-);
-
-Readbezier(file):=Readbezier(file,[]);
-Readbezier(file,optionorg):=(
-//help:Readbezier("xsr");
-//help:Readbezier(options=["Num=10","nogeo"]);
- regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
- options=optionorg;
- tmp=Divoptions(options);
- stL=tmp_7;
- geo=0;
- forall(stL,
- tmp=Toupper(substring(#,0,1));
- if(tmp=="G",geo=1);
- options=remove(options,[#]);
- );
- ReadOutData(file);
- tmp=file+"n_1_1";
- nn=parse(tmp);
- out=[];
- forall(1..nn,nc,
- tmp=file+text(nc);
- tmp1=parse(tmp+"k");
- tmp2=parse(tmp+"c");
- if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
- if(geo==1,
- alpha="abcdefghijklmnopqrstuvwxyz";
- forall(1..length(tmp1),
- tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
- Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
- inspect(parse(tmp),"labeled",false);
- inspect(parse(tmp),"ptsize",3);
- tmp1_#=parse(tmp+".xy");
- );
- forall(1..length(tmp2),
- tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
- Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
- inspect(parse(tmp),"labeled",false);
- inspect(parse(tmp),"color",4);
- inspect(parse(tmp),"ptsize",3);
- tmp2_#_1=parse(tmp+".xy");
- tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
- Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
- inspect(parse(tmp),"labeled",false);
- inspect(parse(tmp),"color",4);
- inspect(parse(tmp),"ptsize",3);
- tmp2_#_2=parse(tmp+".xy");
- );
- BezierNumber=BezierNumber+1;
- );
- Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
- out=append(out,"bz"+tmp);
- );
- out;
-);
-
-Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
-Ospline(nm,ptlist,options):=(
-//help:Ospline("1",ptlist,[options]);
- regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
- p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
- name="o"+nm;
- if(isstring(ptlist),list=parse(ptlist),list=ptlist);
- if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
-// list=apply(list,LLcrd(#));
- ctrL=[];
- forall(1..(length(list)-1),
- flg=0;
- p1=Lcrd(list_#); // 16.08.16
- p2=Lcrd(list_(#+1)); // 16.08.16
- if(#==1 % #==length(list)-1,
- flg=1;
- if(closed==0,
- pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
- pR=(2*p1+p2)/3; // 16.08.16
- ctrL=append(ctrL,[pQ,pR]);
- flg=2;
- ,
- if(#==1,
- p0=Lcrd(list_(length(list)-1)); // 16.08.16
- p3=Lcrd(list_(#+2)); // 16.08.16
- ,
- p0=Lcrd(list_(#-1)); // 16.08.16
- p3=Lcrd(list_2); // 16.08.16
- );
- );
- );
- if(flg<=1,
- if(flg==0,
- p0=Lcrd(list_(#-1)); // 16.08.16
- p3=Lcrd(list_(#+2)); // 16.08.16
- );
- tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
- cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
- pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
- pR=p2+cc*(p1-p3); // 16.08.16
- ctrL=append(ctrL,[pQ,pR]);
- );
- );
-// list=apply(list,LLcrd(#)); // 16.08.16
-// ctrL=apply(ctrL,LLcrd(#));
- if(closed==0, // 15.09.21
- p1=ctrL_2_1;
- p2=Lcrd(list_2); // 16.08.16
- pQ=p2+(p2-p1);
- ctrL_1=[pQ];
- tmp=length(ctrL);
- tmp1=ctrL_(tmp-1);
- p1=ctrL_(tmp-1)_2;
- p2=Lcrd(list_(tmp)); // 16.08.16
- pQ=p2+(p2-p1);
- ctrL_tmp=[pQ];
- );
- Bezier("o"+nm,list,ctrL,options);
-);
-
-CRspline(nm,ptL):=CRspline(nm,ptL,[]);
-CRspline(nm,ptL,options):=(
- // Catmull-Rom spline
-//help:CRspline("1",[A,B,C,A]);
- regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
- name="crsp"+nm;
- if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
- ptlist=tmp_1;
- if(length(tmp)==1,
- cflg=1;
- ,
- cflg=0;
- ctrpts=tmp_2;
- );
- c=1/6;
- tmp=Divoptions(options);
- eqL=tmp_5;
- opcindy=tmp_(length(tmp)); // 15.03.05
- forall(eqL,
- if(substring(#,0,1)=="R",
- tmp2=indexof(#,"=");
- c=parse(substring(#,tmp2,length(#)));
- );
- );
- ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
- ctrlist=[];
- forall(1..(length(ptlist)-1),
- if(#==1,
- if(cflg==0,
- tmp1=ctrpts_1;
- ,
- v=ptlist_2-ptlist_(length(ptlist)-1);
- tmp1=ptlist_#+c*v;
- );
- ,
- v=ptlist_(#+1)-ptlist_(#-1);
- tmp1=ptlist_#+c*v;
- );
- if(#==length(ptlist)-1,
- if(cflg==0,
- tmp2=ctrpts_2;
- ,
- v=ptlist_2-ptlist_#;
- tmp2=ptlist_(#+1)-c*v;
- );
- ,
- v=ptlist_(#+2)-ptlist_#;
- tmp2=ptlist_(#+1)-c*v;
- );
- tmp=select(options,indexof(text(#),"->")>0);
- tmp=append(tmp,"notex"); //15.03.05
- Pointdata(name+text(#),[tmp1,tmp2],tmp);
- ctrlist=append(ctrlist,[tmp1,tmp2]);
- );
- Bezier(nm,ptlist,ctrlist,options);
-);
-
-Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
-//help:Beziersmooth("1",[A,B,C,A]);
-Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
-Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
-Bzspline(nm,ptLorg,options):=(
- // smooth bezier
- regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
- tmp,tmp1,tmp2,cflg,ctrlist);
- name="bzsp"+nm;
- Eps=10^(-3);
- ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
- if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
- forall(2..length(ptL),
- pt=ptL_#;
- pt1=ptL_(#-1);
- tmp1="C"+text(#-1)+"q";
- Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
- );
- forall(2..(length(ptL)-1),
- if(#<length(ptL) % cflg==1,
- lstr="c"+text(#);
- pt=ptLorg_#; // 16.08.16
- pt1=parse("C"+text(#-1)+"q");
- create([lstr],"Join",[pt1,pt]);
- tmp2="C"+text(#)+"p";
- tmp=Append((2*pt.xy-pt1.xy),1);
- create([tmp2],"PointOnLine",[parse(lstr),tmp]);
- );
- );
- if(cflg==0,
- pt=ptL_1;
- pt1=ptL_2;
- tmp1="C1p";
- Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
- );
- if(cflg==1,
- lstr="c1";
- pt=ptLorg_1; // 16.08.16
- pt1=parse("C"+text(length(ptL)-1)+"q");
- create([lstr],"Join",[pt1,pt]);
- tmp1="C1p";
- tmp=Append((2*pt.xy-pt1.xy),1);
- create([tmp1],"PointOnLine",[parse(lstr),tmp]);
- );
- ctrlist=[];
- forall(1..(length(ptL)-1),
- if(#>1 % cflg==1,
- tmp1="c"+text(#);
- inspect(parse(tmp1),"alpha",0.3);
- );
- tmp1="C"+text(#)+"p";
- tmp2="C"+text(#)+"q";
- inspect(parse(tmp1),"ptsize",3);
- inspect(parse(tmp1),"color",3);
- inspect(parse(tmp2),"ptsize",3);
- inspect(parse(tmp2),"color",3);
- tmp=[parse(tmp1),parse(tmp2)];
- ctrlist=append(ctrlist,tmp);
- );
- Bezier(nm,ptL,ctrlist,options);
- [ptL,ctrlist];
-);
-
-Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
-Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
-Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
-Bzsspline(nm,ptLorg,options):=(
- // smooth bezier with symmetric control points
- regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
- tmp,tmp1,tmp2,cflg,ctrlist);
- name="bzssp"+nm;
- Eps=10^(-3);
- ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
- if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
- forall(2..length(ptL),
- pt=ptL_#;
- pt1=ptL_(#-1);
- tmp1="C"+text(#-1)+"q";
- Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
- );
- forall(2..(length(ptL)-1),
- if(#<length(ptL) % cflg==1,
- pt=ptL_#;
- pt1=parse("C"+text(#-1)+"q");
- tmp2="C"+text(#)+"p=2*pt-pt1";
- parse(tmp2);
- );
- );
- if(cflg==0,
- pt=ptL_1;
- pt1=ptL_2;
- Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
- inspect(C1p,"ptsize",3);
- inspect(C1p,"color",3);
- );
- if(cflg==1,
- pt=ptL_1;
- pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
- tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
- parse(tmp1);
- );
- ctrlist=[];
- forall(1..(length(ptL)-1),
- tmp1="C"+text(#)+"p";
- tmp2="C"+text(#)+"q";
- inspect(parse(tmp2),"ptsize",3);
- inspect(parse(tmp2),"color",3);
- tmp=[parse(tmp1),parse(tmp2)];
- ctrlist=append(ctrlist,tmp);
- );
- Bezier(nm,ptL,ctrlist,options);
- [ptL,ctrlist];
-);
-
-Listbspline2bz(listorg):=(
- regional(Eps,list,pcl,ptl,ctrl,k);
- Eps=10^(-3);
- list=apply(listorg,Lcrd(#)); // 16.08.16
- k=length(list);
- if(|list_1-list_k|>Eps,
- pcl=list;
- pcl_1=2*list_1-list_2;
- pcl_k=2*list_k-list_(k-1);
- ,
- pcl=concat(list,[list_2]);
- );
- ctrl=apply(2..(length(pcl)-1),[pcl_#]);
- ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
- [ptl,ctrl];
-);
-
-Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
-Bspline(nm,ctrL,options):=(
-//help:Bspline("",[A,B,C]);
- regional(list,tmp);
- list=Listbspline2bz(ctrL);
- tmp=BezierCurve("b"+nm,list_1,list_2,options);
- tmp;
-);
-
-MeetCurve(Crv,Xorg,Yorg):=(
- regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
- if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
- if(MeasureDepth(Cv)==2,Cv=Cv_1);
- Cv=apply(Cv,LLcrd(#)); // 14.12.18
- while(length(Cv)==1,
- Cv=Cv_1;
- );
- Cv=apply(Cv,Lcrd(#));
- tmp1=min(apply(Cv,#_1));
- tmp2=max(apply(Cv,#_1));
- if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
- if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
- if(X0<tmp1,
- X0=tmp1;
- ,
- if(X0>tmp2,
- X0=tmp2;
- );
- );
- tmp1=select(
- 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
- tmp2=select(
- 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
- tmp2=remove(tmp2,common(tmp2,tmp1));
- Ban=concat(tmp1,tmp2);
- Tate=select(Ban,
- abs(Cv_#_1-Cv_(#+1)_1)<=
- 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
- );
- Ban=remove(Ban,Tate);
- Ylist=[];
- forall(Ban,
- tmp=Cv_#;
- x1=tmp_1; y1=tmp_2;
- tmp=Cv_(#+1);
- x2=tmp_1; y2=tmp_2;
- tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
- Ylist=append(Ylist,tmp);
- );
- forall(Tate,
- tmp=Cv_#;
- x1=tmp_1; y1=tmp_2;
- tmp=Cv_(#+1);
- x2=tmp_1; y2=tmp_2;
- tmp1=min([y1,y2]);
- tmp2=max([y1,y2]);
- if(Y0<tmp1,
- tmp=tmp1;
- ,
- if(Y0>tmp2,
- tmp=tmp2;
- ,
- tmp=Y0;
- );
- );
- Ylist=append(Ylist,tmp);
- );
- tmp=sort(Ylist,abs(#_1-Y0));
- [X0,tmp_1];
-);
-
-PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
-PutonLine(name,p1org,p2org,options):=(
-//help:PutonLine("C","sgAB");
-//help:PutonLine("C",pA,pB);
- regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
- par=0.5;
- tmp=Divoptions(options);
- if(length(tmp_6)>0,
- par=tmp_6_1;
- );
- p1=Lcrd(p1org);//16.10.11from
- p2=Lcrd(p2org);
- dx=p2_1-p1_1;
- dy=p2_2-p1_2;
- tmp1=(1-par)*p1+par*p2;
- if(abs(dx)>abs(dy),
- tmp=name+".x";
- tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
- Putpoint(name,tmp1,parse(tmp2));
- ,
- if(abs(dy)>0,
- tmp=name+".y";
- tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
- Putpoint(name,tmp1,parse(tmp2));
- ,
- tmp2=p1;//16.10.11
- Putpoint(name,tmp1,tmp2);
- );
- );
-);
-
-PutonSeg(name,sgstr):=(
- regional(seg,p1,p2);
- if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
- PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
-);
-PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
-PutonSeg(name,p1org,p2org,options):=(
-//help:PutonSeg("C","sgAB");
-//help:PutonSeg("C",pA,pB);
- regional(par,dx,dy,p,tmp,tmp1,tmp2);
- par=0.5;
- tmp=Divoptions(options);
- if(length(tmp_6)>0,
- par=tmp_6_1;
- );
- p1=Lcrd(p1org);//16.10.11from
- p2=Lcrd(p2org);
- PutonLine(name,p1,p2,[par]);
- dx=p2_1-p1_1;
- dy=p2_2-p1_2;
- p=parse(name+".xy");
- p=LLcrd(p);
- if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
- if(|p-p1|<|p-p2|,
- parse(name+".xy=Pcrd(p1)");
- ,
- parse(name+".xy=Pcrd(p2)");
- );
- );
- if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
- if(|p-p1|<|p-p2|,
- parse(name+".xy=Pcrd(p1)");
- ,
- parse(name+".xy=Pcrd(p2)");//16.10.11upto
- );
- );
-);
-
-PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
-PutonCurve(pn,crv,options):=(
-//help:PutonCurve("A","gr1");
- regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
- if(!islist(options),optionL=[options],optionL=options);
- leftlim=XMIN;
- rightlim=XMAX;
- Flg=0;
- Msg="y";
- forall(optionL,
- if(isstring(#), // 16.02.10 from
- tmp=indexof(#,"=");
- tmp1=Toupper(substring(#,tmp,tmp+1));
- if(tmp1=="N", Msg="n"); // 16.02.10 upto
- ,
- if(Flg==0,
- leftlim=#;
- Flg=Flg+1;
- ,
- rightlim=#;
- );
- );
- );
- Pmt=MeetCurve(crv,leftlim,0);
- pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
- if(!contains(pstr,pn),
- createpoint(pn,Pcrd(Pmt));
- ,
- tmp1=parse(pn+".x");
- if(tmp1< leftlim % tmp1>rightlim,
- if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
- Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
- ,
- Pmt=MeetCurve(crv,pn+".x",pn+".y");
- );
- ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
- parse(ptstr);
- );
- if(Msg=="y",
- println("Put "+pn+" on Curve "+text(crv));
- );
-);
-
-CrossPoint(name,Crv1,Crv2,range):=(
- regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
- Mx1=range_1; Mx2=range_2;
- repeat(15,
- Mx3=(Mx1+Mx2)/2;
- Crs1=MeetCurve(Crv1,Mx1,0);
- Crs2=MeetCurve(Crv2,Mx1,0);
- Crs3=MeetCurve(Crv1,Mx3,0);
- Crs4=MeetCurve(Crv2,Mx3,0);
- df1=Crs1_2-Crs2_2;
- df2=Crs3_2-Crs4_2;
- if((df1>0 & df2>0) % (df1<0 & df2<0),
- Mx1=Mx3;
- ,
- Mx2=Mx3;
- );
- );
- Putpoint(name,Crs1);
-);
-
-Setscaling(sc):=(
-//help:Setscaling(3);
- SCALEX=1;
- SCALEY=sc;
- Com0th("Setscaling("+sc+")");
- Setwindow("Msg=no");
-);
-
-Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
-Tabledatalight(nm,xLst,yLst,rmvL,options):=(
-//help:Tabledatalight("",xLst,yLst,rmvL,[2]);
- regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
- tmp,tmp1,tmp2,tmp3,Eps);
-// name="tb"+nm;
- name="tb";
- println("Tabledatalight "+name+" generated");
- tmp=sum(yLst);
- upleft=[0,tmp];
- tick=1;
- tmp=Divoptions(options);
- flg=0;
- forall(tmp_6,
- if(flg==0,
- tick=#;
- flg=flg+1;
- ,
- upleft=tmp_6_1;
- );
- );
- ul=upleft/10;
- m=length(xLst);
- n=length(yLst);
- xsize=sum(xLst);
- ysize=sum(yLst);
- clist=[ul];
- rlist=[ul];
- forall(1..m,
- tmp1=clist_(#)_1+xLst_#/10;
- clist=append(clist,[tmp1,clist_1_2]);
- );
- forall(1..n,
- tmp1=rlist_(#)_2-yLst_#/10;
- rlist=append(rlist,[0,tmp1]);
- );
- Tb=[clist,rlist];
- tmp=name+"="+Tb;
- parse(tmp);
- forall(0..m,
- tmp1="c"+text(#)+"r0";
- tmp2="c"+text(#)+"r"+text(n);
- Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
- if(mod(#,tick)==0 % #==m,
- tmp=clist_(#+1);
- drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
- );
- );
- forall(0..n,
- tmp1="c0r"+text(#);
- tmp2="c"+text(m)+"r"+text(#);
- Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
- if(mod(#,tick)==0 % #==n,
- tmp=rlist_(#+1);
- drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
- );
- );
- Tsegrmv(rmvL,options);
- Addax(0);
- Eps=10^(-3);
- tmp1=clist_(length(clist));
- tmp2=rlist_1;
- tmp3=rlist_(length(rlist));
- Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
- Tb;
-);
-
-Tabledata(nm,n,m,xsize,ysize,rmvL):=
- Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
-Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
- regional(Tb,name,tmp,xLst,yLst);
- name="tb"+nm;
- xLst=apply(1..n,xsize/n);
- yLst=apply(1..m,ysize/m);
- Tabledata(nm,xLst,yLst,rmvL,options)
-);
-Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
-Tabledata(nm,xLst,yLst,rmvL,options):=(
-//help:Tabledata("",xLst,yLst,rmvL,[2]);
- regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
- tmp,tmp1,tmp2,tmp3,Eps);
-// name="tb"+nm;
- name="tb";
- println("Tabledata "+name+" generated");
- tmp=sum(yLst);
- upleft=[0,tmp];
- tick=1;
- tmp=Divoptions(options);
- flg=0;
- forall(tmp_6,
- if(flg==0,
- tick=#;
- flg=flg+1;
- ,
- upleft=tmp_6_1;
- );
- );
- ul=upleft/10;
- m=length(xLst);
- n=length(yLst);
- xsize=sum(xLst);
- ysize=sum(yLst);
- clist=[ul];
- rlist=[ul];
- forall(1..m,
- tmp1=clist_(#)_1+xLst_#/10;
- clist=append(clist,[tmp1,clist_1_2]);
- );
- forall(1..n,
- tmp1=rlist_(#)_2-yLst_#/10;
- rlist=append(rlist,[0,tmp1]);
- );
- Tb=[clist,rlist];
- tmp=name+"="+Tb;
- parse(tmp);
- forall(0..m,
- tmp="C"+text(#);
- tmp1="c"+text(#)+"r0";
- if(#==0,
- Putpoint(tmp,Tgrid(tmp1));
- ,
- Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
- clist_(#+1)=parse(tmp+".xy");
- );
- inspect(parse(tmp),"ptsize",3);
- inspect(parse(tmp),"labeled",false);
- if(mod(#,tick)==0 % #==m,
- tmp=clist_(#+1);
- drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
- );
- );
- forall(0..n,
- tmp="R"+text(#);
- tmp1="c0r"+text(#);
- if(#==0,
- Putpoint(tmp,Tgrid(tmp1));
- ,
- Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
- rlist_(#+1)=parse(tmp+".xy");
- );
- Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
- inspect(parse(tmp),"ptsize",3);
- inspect(parse(tmp),"labeled",false);
- if(mod(#,tick)==0 % #==n,
- tmp=rlist_(#+1);
- drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
- );
- );
- Tb=[clist,rlist];
- tmp=name+"="+Tb;
- parse(tmp);
- forall(0..m,
- tmp1="c"+text(#)+"r0";
- tmp2="c"+text(#)+"r"+text(n);
- Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
- if(#<m,
- tmp1=parse("C"+text(#));
- tmp2=parse("C"+text(#+1));
- tmp=(tmp1.xy+tmp2.xy)/2;
- drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
- );
- );
- forall(0..n,
- tmp1="c0r"+text(#);
- tmp2="c"+text(m)+"r"+text(#);
- Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
- if(#<n,
- tmp1=parse("R"+text(#));
- tmp2=parse("R"+text(#+1));
- tmp=(tmp1.xy+tmp2.xy)/2;
- drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
- );
- );
- Tsegrmv(rmvL,options);
- Addax(0);
- Eps=10^(-3);
- tmp1=clist_(length(clist));
- tmp2=rlist_1;
- tmp3=rlist_(length(rlist)); // 15.06.11
- Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
- Tb;
-);
-
-Tseginfo(seg):=(
- regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
- if(substring(seg,0,2)=="sg",
- cr=substring(seg,2,length(seg));
- ,
- cr=seg;
- );
- tp=substring(cr,0,1);
- if(tp=="c",
- tpc="r";
- ,
- tpc="c";
- );
- tmp1=indexof(cr,tpc);
- tmp=substring(cr,tmp1,length(cr));
- tmp2=tmp1+indexof(tmp,tpc);
- n1=substring(cr,1,tmp1-1);
- n2=substring(cr,tmp1,tmp2-1);
- n3=substring(cr,tmp2,length(cr));
- [tp+n1,tpc,parse(n2),parse(n3)];
-);
-
-Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
-Tsegrmv(rmvL,options):=(
- regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
- forall(rmvL,cr,
- tmp1=Tseginfo(cr);
- hd=tmp1_1;
- tpc=tmp1_2;
- m1=tmp1_3;
- m2=tmp1_4;
- gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
- flg=0;
- forall(gcL,
- if(flg==0,
- tmp=Tseginfo(#_1);
- n1=tmp_3;
- n2=tmp_4;
- if(m1>=n1 & m2<=n2,
- gc=#;
- flg=1;
- );
- );
- );
- if(flg==1,
- Changestyle([gc_1],["nodisp"]);
- tail="";
- if(indexof(hd,"r")>0,
- tail=hd; hd="";
- );
- if(n1<m1,
- tmp1=tpc+text(n1);
- tmp2=tpc+text(m1);
- tmp=hd+tail+tmp1+tmp2;
- Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
- );
- if(m2<n2,
- tmp1=tpc+text(m2);
- tmp2=tpc+text(n2);
- tmp=hd+tail+tmp1+tmp2;
- Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
- );
- );
- );
-);
-
-Tgrid(ptstr):=(
-//help:Tgrid("c2r5");
- regional(tmp,tmp1,tmp2);
- tmp=parse(ptstr);
- if(islist(tmp),
- tmp;
- ,
- tmp=indexof(ptstr,"r");
- tmp1=substring(ptstr,1,tmp-1);
- tmp1=parse(tmp1);
- tmp2=substring(ptstr,tmp,length(ptstr));
- tmp2=parse(tmp2);
- [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
- );
-);
-
-Tlistplot(ptL):=Tlistplot(ptL,[]);
-Tlistplot(Ag1,Ag2):=(
- regional(nm,ptL,options);
- if(isstring(Ag1),
- nm=Ag1;
- ptL=Ag2;
- options=[];
- ,
- ptL=Ag1;
- options=Ag2;
- nm=ptL_1+ptL_2;
- );
- Tlistplot(nm,ptL,options);
-);
-Tlistplot(nm,ptL,options):=(
-//help:Tlistplot(["c0r0","c0r4"]);
-//help:Tlistplot("1",["c0r0","c0r4"]);
- regional(tmp);
- tmp=apply(ptL,Tgrid(#)); // 15.06.03
- Listplot(nm,tmp,append(options,"Msg=no"));
-);
-
-ChangeTablestyle(nameL,style):=(
-////help:ChangeTablestyle(["r0c0c3"],["da"]);
- regional(nmL,tmp,tmp1,tmp2);
- if(islist(nameL),nmL=nameL,nmL=[nameL]);
- nmL=apply(nmL,"sg"+#);
- nmL=select(nmL,islist(parse(#)));
- Changestyle(nmL,style);
-);
-
-Findcell(pos1,pos2):=Findcell("",pos1,pos2);
-Findcell(Tbdata,pos1,pos2):=(
-//help:Findcell("c0r0","c2r1");
- regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
- if(isstring(pos1),
- posnw=Tgrid(pos1); // 15.05.20
- posse=Tgrid(pos2);
- //posnw=parse(pos1);
- //posse=parse(pos2);
- ,
- if(islist(pos1),
- posnw=pos1;
- posse=pos2;
- ,
- tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
- tmp2="c"+text(pos1)+"r"+text(pos2);
- posnw=Tgrid(tmp1);
- posse=Tgrid(tmp2);
-// posnw=parse(tmp1);
-// posse=parse(tmp2);
- );
- );
- ctr=(posnw+posse)/2;
- dx=abs(posse_1-ctr_1);
- dy=abs(posnw_2-ctr_2);
- [ctr,dx,dy];
-);
-
-Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
-Putcell(Tbdata,pos1,pos2,dir,lttr):=(
-//help:Putcell("c0r0","c2r1","lt","abc");
-//help:Putcell(2,3,"c","xyz");
- regional(tmp,tmp1,tmp2,posnw,posse,
- posdir,posstr,ctr,dx,dy);
- tmp=Findcell(Tbdata,pos1,pos2);
- ctr=tmp_1; dx=tmp_2; dy=tmp_3;
- posdir=ctr;
- posstr=dir;
- if(indexof(dir,"b")>0,
- posdir_2=posdir_2-dy;
- posstr=replace(posstr,"b","n");
- );
- if(indexof(dir,"t")>0,
- posdir_2=posdir_2+dy;
- posstr=replace(posstr,"t","s");
- );
- if(indexof(dir,"l")>0,
- posdir_1=posdir_1-dx;
- posstr=replace(posstr,"l","e");
- );
- if(indexof(dir,"r")>0,
- posdir_1=posdir_1+dx;
- posstr=replace(posstr,"r","w");
- );
- Letter(posdir,posstr,text(lttr));
-);
-
-Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
-Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
-//help:Putcellexpr("c0r0","c2r1","lt","abc");
-//help:Putcellexpr(2,3,"c","\sin x");
- Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
-);
-
-Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
-Putrow(Tbdata,nrow,dir,lttrL):=(
-//help:Putrow(1,"c",["x","y","z"]);
- regional(tmp,tmp1,mcol);
- mcol=length(lttrL);
- forall(1..mcol,
- Putcell(Tbdata,#,nrow,dir,lttrL_#);
- );
-);
-
-Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
-Putrowexpr(Tbdata,nrow,dir,exL):=(
-//help:Putrowexpr(2,"r",["x","y","z"]);
- regional(lttrL);
- lttrL=apply(exL,"$"+#+"$");
- Putrow(Tbdata,nrow,dir,lttrL);
-);
-
-PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
-PutcoL(Tbdata,mcol,dir,lttrL):=(
-//help:PutcoL(1,"c",["x","y","z"]);
- regional(tmp,tmp1,nrow);
- nrow=length(lttrL);
- forall(1..nrow,
- Putcell(Tbdata,mcol,#,dir,lttrL_#);
- );
-);
-PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
-PutcoLexpr(Tbdata,mcol,dir,exL):=(
-//help:PutcoLexpr(2,"r",["x","y","z"]);
- regional(lttrL);
- lttrL=apply(exL,"$"+#+"$");
- PutcoL(Tbdata,mcol,dir,lttrL);
-);
-
-Setwindow():=Setwindow("Msg=yes");
-Setwindow(str):=(
- regional(tmp,tmp1,tmp2,msg);
- msg="y";
- tmp=indexof(str,"="); // 16.02.10
- tmp1=Toupper(substring(str,tmp,tmp+1));
- if(tmp1=="N",msg="n");
- if((ispoint(SW) & ispoint(NE)),
- tmp1=Lcrd(SW);
- tmp2=Lcrd(NE);
- XMIN=tmp1_1; XMAX=tmp2_1;
- YMIN=tmp1_2; YMAX=tmp2_2;
- ,
-// XMIN=-5; XMAX=5;
-// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
- createpoint("SW",Pcrd([XMIN,YMIN]));
- createpoint("NE", Pcrd([XMAX,YMAX]));
- );
- if(msg=="y",
- println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
- );
- layer(KETPICLAYER);
- autoclearlayer(KETPICLAYER,true);
- drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
- Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
-);
-Setwindow(xrange,yrange):=(
-//help:Setwindow([2,3],[-1,1]);
- XMIN=xrange_1;
- XMAX=xrange_2;
- YMIN=yrange_1;
- YMAX=yrange_2;
-// Setwindow();
-);
-
-Sciform(list):=(
- regional(plotlist,comp,pos,out,out2,nn,strL,flg,
- tmp,tmp1,tmp2,tmp3,Nj);
- plotlist=Flatten([list]);
- out=replace(plotlist_1,".xy","");
- out=replace(out,".x","(1)");
- out=replace(out,".y","(2)");
- if(length(plotlist)==1,
- comp=[];
- forall(1..length(out),
- comp=append(comp,substring(out,#-1,#));
- );
- out="";
- pos=0;
- forall(comp,
- if(#!="'",
- out=out+#;
- ,
- if(pos==0,
- tmp=indexof(out,"Assign(");
- if(substring(out,length(out)-7,length(out))=="Assign(",
- out=out+"'";
- pos=1;
- ,
- out=out+"Assign('";
- pos=2;
- );
- ,
- if(pos==2,
- out=out+"')";
- ,
- out=out+"'";
- );
- pos=0;
- );
- );
- );
- ,
- forall(2..length(plotlist),
- comp=plotlist_#;
- if(isstring(comp),
- pos=indexof(comp,"Assign(");
- if(pos>0,
- comp=substring(comp,6,length(comp));
- );
- out=out+"Assign(";
- comp=replace(comp,".xy","");
- comp=replace(comp,".x","(1)");
- comp=replace(comp,".y","(2)");
- out=out+"'"+comp+"'";
- out=out+"),";
- );
- if(islist(comp),
- forall(comp,
- out=out+"'"+#+"',";
- );
- );
- );
- if(length(plotlist)>1,
- out=substring(out,0,length(out)-1);
- out=out+");";
- );
- );
- pos=[];
- forall(1..length(out),
- tmp=indexof(substring(out,#-1,length(out)),"Assign");
- if(tmp>0,
- tmp1=#-1+tmp;
- if(length(pos)==0,
- pos=[tmp1];
- ,
- if(pos_(length(pos))<tmp1,
- pos=append(pos,tmp1);
- );
- );
- );
- );
- if(length(pos)>0,
- strL=[];
- Nj=0;
- forall(pos,
- tmp=substring(out,Nj,#-1);
- strL=append(strL,tmp);
- Nj=#-1;
- );
- strL=append(strL,substring(out,Nj,length(out)));
- out="";
- forall(strL,
- if(indexof(#,"Assign")==0,
- out=out+#;
- ,
- tmp=indexof(#,"('");
- tmp1=indexof(#,"')");
- tmp2=substring(#,tmp+1,tmp1-2);
- tmp3=substring(#,tmp1-2,length(#));
- if(indexof(tmp2,"=")==0,
- out=out+#;
- ,
- tmp=substring(tmp2,0,indexof(tmp2,"="));
- out=out+"'"+tmp+"'+"+"Assign('";
- tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
- out=out+tmp+tmp3;
- );
- );
- );
- );
- out2=""; // patched 16.01.21 from
- nn=length(out);
- flg=0;
- forall(1..nn,
- if(flg==0,
- tmp=indexof(out,"='+Assign('");
- if(tmp==0,
- out2=out2+out;
- flg=1;
- ,
- out2=out2+substring(out,0,tmp);
- out=substring(out,tmp+10,length(out));
- tmp=indexof(out,"'"); // 16.04.19 from
- tmp1=substring(out,0,tmp-1);
- tmp2="1234567890";
- tmp=apply(1..length(tmp1),
- indexof(tmp2,substring(tmp1,#-1,#)));
- tmp=min(tmp);
- if(tmp==0, // 16.04.19 upto
- out2=out2+"'+Assign('";
- ,
- tmp=indexof(out,"'");
- out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
- );
- );
- );
- );
- out2=replace(out2,"Dist=","D=");
- out2=replace(out2,"Dis=","D=");
- out2;
-);
-
-
-Rform(list):=(
- regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
- out=list;
- out=replace(out,"[[[","list([[");
- out=replace(out,"[","c(");
- out=replace(out,"]",")");
- out=replace(out,".xy","");
- out=replace(out,".x","[1]");
- out=replace(out,".y","[2]");
- out;
-);
-
-Defvar(varstr):=(
- regional(name,value,tmp,tmp1);
- parse(varstr);
- tmp=indexof(varstr,"=");
- name=substring(varstr,0,tmp-1);
- value=substring(varstr,tmp,length(varstr));
- value=parse(value);
- tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
- if(length(tmp1)>0,
- tmp=tmp1_1;
- VLIST_tmp=[name+"=",value];
- ,
- VLIST=prepend([name+"=",value],VLIST);
- );
-);
-
-Defvar(name,value):=(
-//help:Defvar("a",0.3);
- regional(tmp,tmp1);
- if(islist(value),
- tmp1="[";
- forall(value,
- tmp1=tmp1+format(#,5)+",";
- );
- tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
- ,
- tmp1=format(value,5);
- );
- tmp=name+"="+tmp1; // 15.02.06
- parse(tmp);
- VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
- VLIST=prepend([name+"=",value],VLIST);
-);
-
-Iftosci(strorg):=( // 16.06.10
- regional(str,ifL,ppL,cpL,kk,sL,
- tmp,tmp1,tmp2,tmp3,tmp4);
- str=replace(strorg,LFmark,"");
- ifL=Indexall(str,"if(");
- ppL=Bracket(str,"()");
- cpL=Indexall(str,",");
- tmp1=Bracket(str,"[]");
- forall(1..(length(tmp1)/2),kk,
- cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
- );
- forall(1..length(ifL),kk,
- tmp=select(ppL,#_1>ifL_kk);
- tmp1=tmp_1;
- tmp2=select(tmp,#_2==-tmp1_2);
- tmp2=tmp2_1;
- tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
- ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
- );
- forall(1..length(cpL),kk,
- tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
- tmp1=tmp_(length(tmp));
- cpL_kk=[cpL_kk,tmp1];
- );
- sL=apply(1..length(str),substring(str,#-1,#));
- forall(1..length(ifL),kk,
- tmp1=ifL_kk_1;
- tmp2=ifL_kk_2;
- tmp=select(cpL,#_2==kk);
- tmp3=apply(tmp,#_1);
- sL_tmp1=" ";
- sL_tmp2=";end;";
- sL_(tmp3_1)=" then,";
- if(length(tmp3)>1,
- sL_(tmp3_2)=";else,";
- );
- );
- tmp=sum(sL);
-);
-
-Fortosci(strorg):=(
- regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
- Out,repL,Pflg,Iflg,Cflg);
- str=strorg;
- repL=[];
- tmp1=Indexall(str,"forall");
- tmp2=Indexall(str,",");
- forall(1..length(tmp1),jj,
- tmp=select(tmp2,#>tmp1_jj);
- var=substring(str,tmp_1,tmp_2-1);
- tmp3=substring(str,tmp1_jj-1,tmp_2-1);
- tmp=indexof(tmp3,"(");
- tmp4=substring(tmp3,tmp,length(tmp3));
- tmp=indexof(tmp4,",");
- tmp4=substring(tmp4,0,tmp-1);
- tmp4="for "+var+"="+tmp4;
- tmp4=replace(tmp4,"..",":");
- repL=concat(repL,[tmp3,tmp4]);
- );
- forall(1..length(repL)/2,
- str=replace(str,repL_(2*#-1),repL_(2*#));
- );
- tmp=Bracket(str);
- tmp=select(tmp,#_2==0);
- tmp=tmp_1_1;
- tmp1=substring(str,tmp-1,length(str));
- tmp1=replace(tmp1,")",";end");
- str=substring(str,0,tmp-1)+tmp1;
- str=replace(str,";;",";");
- str;
-);
-
-Deffun(name,bodylist):=(
-//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
- regional(funstr,tmp,tmp1,str,Pos);
- funstr=name+":=(";
- forall(bodylist,
- funstr=funstr+#+";";
- );
- funstr=funstr+");";
- parse(funstr);
- tmp=bodylist_(length(bodylist));
- str="function "+tmp+"="+name+",";
- forall(1..(length(bodylist)-1),
- tmp1=bodylist_#;
- tmp1=replace(tmp1,LFmark,"");// 16.05.26
- tmp1=replace(tmp1," ","");// 16.05.26
- Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
- if(Pos==0,
- tmp=replace(tmp1,".xy","");
- tmp=replace(tmp,".x","(1)");
- tmp=replace(tmp,".y","(2)");
- if(indexof(tmp,"if(")>0,
- tmp=iftosci(tmp);
- );
- if(indexof(tmp,"forall(")>0, // 16.05.26from
- tmp=Fortosci(tmp);
- ); // 16.05.26upto
- str=str+tmp+",";
- );
- );
- str=str+"endfunction;";
- FUNLIST=append(FUNLIST,str);
-);
-
-Windispg():=(
- regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,opcindy);
- gsave();
- layer(KETPIClayer);
- forall(GCLIST,Nj,
- if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
- if(islist(Dt) & length(Dt)>0, // 12.19,12.22
- tmp=MeasureDepth(Dt);
- if(tmp==1,Dt=[Dt]);
- opcindy=Nj_3;
- if(Nj_2<0,tmp1=0,tmp1=Nj_2);
- if(tmp1<10,
- forall(Dt,Nk,
-// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
-// tmp2=apply(tmp2,Pcrd(#));
- tmp2=Nk; // 14.12.04
- if(length(Nk)>1,
- forall(2..length(Nk),
- tmp3=textformat(Nk_[#-1,#],5);
- tmp3=substring(tmp3,1,length(tmp3)-1);
- if(tmp1==1,opcindy=opcindy+",dashpattern->[2,2]");
- tmp="draw("+tmp3+
- ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
- parse(tmp);
- );
- ,
- if(length(Nk)==1,
- tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
- parse(tmp);
- );
- );
- );
- );
- );
- );
-// if(ADDAXES=="1", // 16.10.08from
-// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
-// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
-// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
-// Letter([[0,0],"sw","O"]);
-// ); // 16.10.08upto
- grestore();
- layer(0);
-);
-</script>
- <script type="text/javascript">
-var cdy = CindyJS({
- scripts: "cs*",
- use: ["katex"],
- defaultAppearance: {
- dimDependent: 0.7,
- fontFamily: "sans-serif",
- lineSize: 1,
- pointSize: 5.0,
- textsize: 12.0
- },
- angleUnit: "°",
- geometry: [
- {name: "SW", type: "Free", pos: [-2.5744680851063833, -4.0, 0.8525536333742482], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "NE", type: "Free", pos: [4.0, 2.4285714285714284, 0.44032989855593035], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "A", type: "Free", pos: [0.0, -4.0, -0.8], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "B", type: "Free", pos: [-0.02366863905325444, -4.0, 0.9484028584281579], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "a", type: "Segment", color: [0.0, 0.0, 1.0], args: ["A", "B"], labeled: true},
- {name: "C", type: "PointOnSegment", pos: [0.011092747971205843, -4.0, -1.619421523013707], color: [1.0, 0.0, 0.0], args: ["a"], labeled: true},
- {name: "E", type: "Free", pos: [0.0, -4.0, 0.6666666666666666], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "F", type: "Free", pos: [4.0, -2.1818181818181817, 0.36363636363636365], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "b", type: "Segment", color: [0.0, 0.0, 1.0], args: ["E", "F"], labeled: true},
- {name: "G", type: "PointOnSegment", pos: [2.8117446133333335, -4.0, 0.6666666666666666], color: [1.0, 0.0, 0.0], args: ["b"], labeled: true},
- {name: "H", type: "Free", pos: [0.0, -4.0, 0.5714285714285714], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "K", type: "Free", pos: [4.0, -2.5454545454545454, 0.36363636363636365], color: [1.0, 0.0, 0.0], labeled: true},
- {name: "c", type: "Segment", color: [0.0, 0.0, 1.0], args: ["H", "K"], labeled: true},
- {name: "L", type: "PointOnSegment", pos: [0.5714285714285715, -4.0, 0.5714285714285714], color: [1.0, 0.0, 0.0], args: ["c"], labeled: true},
- {name: "M", type: "Free", pos: [-2.0, -4.0, -1.0], color: [1.0, 0.0, 0.0], size: 2.0},
- {name: "Text3", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.29, 0.29], fillalpha: 0.27272728085517883, script: "Viewtex();", text: "Texview", textsize: 18.0, dock: {corner: "UL", offset: [76.0, -20.0]}},
- {name: "Text4", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.498, 0.0], fillalpha: 0.27272728085517883, script: "kc();", text: "Exekc", textsize: 18.0, dock: {corner: "UL", offset: [157.0, -20.0]}},
- {name: "Text1", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 1.0, 0.0], fillalpha: 0.27272728085517883, script: "if(length(Shellparent)>0,\n Makeshell(),Makebat();\n);\nWritetoSci(2);", text: "Parent", textsize: 18.0, dock: {corner: "UL", offset: [10.0, -20.0]}},
- {name: "Text0", type: "ToggleButton", color: [0.0, 0.0, 0.0], fillcolor: [0.0, 1.0, 1.0], fillalpha: 0.27272728085517883, script: "Mkketcindyjs();", text: "KeTJS", textsize: 18.0, dock: {corner: "UL", offset: [225.0, -20.0]}}
- ],
- ports: [{
- id: "CSCanvas",
- width: 1052,
- height: 584,
- transform: [{visibleRect: [-9.745440419289913, 6.700770173058494, 16.50860137608266, -7.873716907262401]}],
- axes: true,
- grid: 1.0,
- snap: true,
- background: "rgb(168,176,192)"
- }],
- csconsole: false,
- cinderella: {build: 1894, version: [2, 9, 1894]}
-});
- </script>
-</head>
-<body>
- <div id="CSCanvas"></div>
-</body>
-</html>