summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/ketcindy/ketlibC
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-10-30 20:45:57 +0000
committerKarl Berry <karl@freefriends.org>2018-10-30 20:45:57 +0000
commit046ae60f6e5bda805763a12a2c95e3441e12e165 (patch)
treef59c0c846c1f5dc679ab5a91c48c1e9c6d867327 /Master/texmf-dist/scripts/ketcindy/ketlibC
parent2f129be30d68dbd9f380bdee127b42eb060b9630 (diff)
ketcindy (30oct18)
git-svn-id: svn://tug.org/texlive/trunk@49030 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/ketcindy/ketlibC')
-rw-r--r--Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h2
-rw-r--r--Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt7
-rw-r--r--Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h80
-rw-r--r--Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h2
4 files changed, 44 insertions, 47 deletions
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h
index 84de58498f3..7c0425cc64d 100644
--- a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h
+++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h
@@ -1,3 +1,4 @@
+//20181024 memberi debugged (for null list )
//20180308 norm added
int length1(double gdata[]){
@@ -817,6 +818,7 @@ void simplesort(double number[]){
int memberi(int a, int list[]){
int i, n=list[0];
+ if(n==0){return 0;} //181024
for(i=1; i<=n; i++){
if(a==list[i]){
return 1;
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt
index 414cc1e0346..40f68d593ab 100644
--- a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt
+++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt
@@ -1,3 +1,10 @@
+180705
+ nohiddenparadata2 debugged (|sp-sq}>1)
+180703
+ nohiddenparadata2 debugged (for closed curve)
+180616
+ nohiddenparadata2 debugged (rewritten a part )
+ output3h debugged (case where din1[0][0]==1)
180613
connectseg,connectseg3 changed ( for null data )
output3h debugged (case where din1[0][0]==1)
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h
index 7f5d9923c9a..d502a2b15c3 100644
--- a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h
+++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h
@@ -1,3 +1,7 @@
+// 181025
+// crv3onsfparadata debugged (case of out=NULL )
+// 181023
+// pthiddenQ changed ( int flg, double out[4] )
// 180430
// crv2sfparadata,wireparadata added
// output3h,output3 chanded
@@ -626,10 +630,10 @@ double funpthiddenQ(short ch,double u, double v,double pa[3]){
return out;
}
-double pthiddenQ(short ch,double pta[3], int uveq){
+int pthiddenQ(short ch,double pta[3], int uveq,double out[4]){
int i, j, k;
double Vec[3]={sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)};
- double v1,v2,v3,out=-Inf;
+ double v1,v2,v3;
double du=(Urng[1]-Urng[0])/Mdv, dv=(Vrng[1]-Vrng[0])/Ndv;
double uval1,uval2,vval1,vval2,eval11,eval12,eval21,eval22;
double pl[5][2], vl[5], ql[11][2],p1[2],p2[2],m1,m2;
@@ -637,6 +641,7 @@ double pthiddenQ(short ch,double pta[3], int uveq){
double tmpd1, tmpd2[2],tmpd3[3],tmp1d3[3];
// Out=1 : hidden
// SL : List of segments near PtA+Vec
+ out[3]=-Inf;
for(j=0; j<=Ndv-1; j++){
vval1=Vrng[0]+j*dv;
vval2=Vrng[0]+(j+1)*dv;
@@ -718,23 +723,27 @@ double pthiddenQ(short ch,double pta[3], int uveq){
if(norm(3,tmp1d3)<Eps1){
tmpd1=zparapt(ptd3)-zparapt(pta)-Eps2;
if(tmpd1>0){
- return tmpd1;
+ copyd(0,2,ptd3,out); out[3]=tmpd1;
+ return 1;
}else{
- out=fmax(out,tmpd1);
+ if(tmpd1>out[3]){
+ copyd(0,2,ptd3,out); out[3]=tmpd1;
+ }
}
}
}
}
}
- return out;
+ return 0;
}
int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[][3]){
double eps0=pow(10,-4.0), s, p1[2], p2[2], q[2],tmpd1, tmpd2[2],tmp1,tmp2;
- double paL[DsizeM], fh[DsizeM][2], pta[3], ptap[2], vec[3],flgd;
+ double paL[DsizeM], fh[DsizeM][2], pta[3], ptap[2], vec[3];
double figL[DsizeM][2], tmpmd2[DsizeM][2], tmpmd3[DsizeM][3];
double tmp1d2[2], tmp2d2[2], tmp3d2[2], tmpd3[3],tmpd4[4];
double pd2[2], qd2[2], pd3[3], qd3[3], sp, sq, tp, tq, dtmp, dtmp1, dtmp2;
+ int flg;
int ncusp=floor(Cusppt[0][0]+0.5), seL[DsizeM];
int i,j,n, nfh, nfk, cspflg,tmpi1[DsizeM];
vec[0]=sin(THETA)*cos(PHI);
@@ -787,41 +796,17 @@ int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[
s=(paL[n]+paL[n+1])/2.0;
invparapt(s,fh,fk, pta);
parapt(pta,ptap);
- flgd=pthiddenQ(ch,pta, uveq);
- if(flgd<=0){ //180518
+ flg=pthiddenQ(ch,pta, uveq, tmpd4);
+ if(flg==0){ //180518
appendi1(n,seL);
}
}
figL[0][0]=0;figkL[0][0]=0;
for(i=1; i<=seL[0]; i++){
- pointoncurve(paL[seL[i]], fh, Eps, tmp1d2);
- pointoncurve(paL[seL[i]+1], fh, Eps, tmp2d2);
- if(i==1){
- copyd(0,1,tmp1d2,pd2);
- sp=paL[seL[i]];
- copyd(0,1,tmp2d2,qd2);
- sq=paL[seL[i]+1];
- }
- else{
- if(memberi(seL[i]-1,seL)==1){
- copyd(0,1,tmp2d2,qd2);
- sq=paL[seL[i]+1];
- }
- else{
- partcrv(sp,sq,fh,tmpmd2);
- appendd2(2,1,length2(tmpmd2),tmpmd2,figL);
- tp=invparapt(sp,fh,fk, tmpd3);
- tq=invparapt(sq,fh,fk,tmpd3);
- partcrv3(tp,tq,fk,tmpmd3);
- appendd3(2,1,length3(tmpmd3),tmpmd3,figkL);
- copyd(0,1,tmp1d2,pd2);
- sp=paL[seL[i]];
- copyd(0,1,tmp2d2,qd2);
- sq=paL[seL[i]+1];
- }
- }
- }
- if(seL[0]>0){
+ sp=paL[seL[i]]; //180616from
+ sq=paL[seL[i]+1];
+ pointoncurve(sp, fh, Eps, pd2);
+ pointoncurve(sq, fh, Eps, qd2);
if(dist(2,pd2,qd2)>Eps1){
nearestptpt(pd2,fh,tmpd4);
dtmp1=tmpd4[2];
@@ -833,11 +818,13 @@ int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[
tq=invparapt(sq,fh,fk,tmpd3);
partcrv3(tp,tq,fk,tmpmd3);
appendd3(2,1,length3(tmpmd3), tmpmd3, figkL);
- }
- else{
- appendd2(2,1,nfh, fh, figL);
- appendd3(2,1,nfk,fk,figkL);
- }
+ }//180616to
+ else{//180705from
+ if(fabs(sp-sq)>1){
+ appendd2(2,1,length2(fh),fh,figL);
+ appendd3(2,1,length3(fk),fk,figkL);
+ }
+ }//180705to
}
tmpi1[0]=0;
for(i=1; i<=length1(paL)-1; i++){
@@ -1338,7 +1325,7 @@ void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double out[][
dataindexd2(2,fh,din);
for(i=1;i<=din[0][0];i++){
fhs[0][0]=0; fks[0][0]=0;
- appendd2(0,din[i][0],din[i][1],fh,fhs);
+ appendd2(0,din[i][0],din[i][1],fh,fhs);
appendd3(0,din[i][0],din[i][1],fk,fks);
tmpmd3[0][0]=0;
if(length2(fhs)>1){
@@ -1353,8 +1340,9 @@ void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double out[][
connectseg3(out, Eps1,tmpmd3);
out[0][0]=0;
appendd3(0,1,length3(tmpmd3),tmpmd3,out);
+ push3(Inf,3,0,out); //181025
connectseg3(outh, Eps1,tmpmd3);
- appendd3(3,1,length3(tmpmd3),tmpmd3,out);
+ appendd3(0,1,length3(tmpmd3),tmpmd3,out);//181025
}
void crv2onsfparadata(short ch,double fh[][2], double fbdyd3[][3], double out[][3]){
@@ -1368,9 +1356,9 @@ void wireparadata(short ch,double bdyk[][3], double udata[], double vdata[],cons
double du=(Urng[1]-Urng[0])/Mdv;
double dv=(Vrng[1]-Vrng[0])/Ndv;
int i,j,din[DsizeS][2];
- short allflg=0;
- if(strlen(fnameh)==0){
- allflg=1;
+ short allflg=1;
+ if(strlen(fnameh)>0){
+ allflg=0;
}
char var[20]="wire3d";
char varh[20]="wireh3d";
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h
index 0adc7779221..cc10b300d7b 100644
--- a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h
+++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h
@@ -35,7 +35,7 @@ int cuspsplitpara(short ch,double pdata[][2], double outkL[][3]);
int makexybdy(short ch,double ehL[][2]);
void partitionseg(double fig[][2],double gL[][2], int ns, double parL[]);
double funpthiddenQ(short ch,double u, double v,double pa[3]);
-double pthiddenQ(short ch,double pta[3], int uveq);
+int pthiddenQ(short ch,double pta[3], int uveq,double out[4]);
int nohiddenpara2(short ch,double paL[], double fk[][3], int uveq, double figkL[][3]);
void borderparadata(short ch,double fkL[][3], double fsL[][3]);
int dropnumlistcrv3(double qd[][3], double eps1, int out[]);