📄 table.c
字号:
glNormal3f(n5.x,n5.y,n5.z); glVertex3f(v5.x,v5.y,v5.z);// glTexCoord2f(v1.x*FACT,v1.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 0.0*0.5); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z);// glTexCoord2f(v6.x*FACT,v6.y*FACT); glTexCoord2f(1.0-phi2/M_PI*2.0, 0.9*0.5); glNormal3f(n6.x,n6.y,n6.z); glVertex3f(v6.x,v6.y,v6.z);// glTexCoord2f(v2.x*FACT,v2.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 0.9*0.5); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z);// glTexCoord2f(v7.x*FACT,v7.y*FACT); glTexCoord2f(1.0-phi2/M_PI*2.0, 1.0*0.5); glNormal3f(n7.x,n7.y,n7.z); glVertex3f(v7.x,v7.y,v7.z);// glTexCoord2f(v3.x*FACT,v3.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 1.0*0.5); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z);// glTexCoord2f(v8.x*FACT,v8.y*FACT); glTexCoord2f(1.0-phi2/M_PI*2.0, 2.0*0.5); glNormal3f(n8.x,n8.y,n8.z); glVertex3f(v8.x,v8.y,v8.z);// glTexCoord2f(v4.x*FACT,v4.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 2.0*0.5); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z);// glTexCoord2f(v8.x*FACT,v8.y*FACT); glTexCoord2f(1.0-phi2/M_PI*2.0, 2.0*0.5); glNormal3f(n8.x,n8.y,n8.z); glVertex3f(v8_2.x,v8_2.y,v8_2.z);// glTexCoord2f(v4.x*FACT,v4.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 2.0*0.5); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_2.x,v4_2.y,v4_2.z);// glTexCoord2f(v8.x*FACT,v8.y*FACT); glTexCoord2f(1.0-phi2/M_PI*2.0, 3.0*0.5); glNormal3f(n8.x,n8.y,n8.z); glVertex3f(v8_3.x,v8_3.y,v8_3.z);// glTexCoord2f(v4.x*FACT,v4.y*FACT); glTexCoord2f(1.0-phi1/M_PI*2.0, 3.0*0.5); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_3.x,v4_3.y,v4_3.z); glEnd(); }/* glBegin(GL_LINES); glVertex3f(v1.x,v1.y,v1.z); v1=vec_add(v1,vec_scale(n1,0.1)); glVertex3f(v1.x,v1.y,v1.z); glVertex3f(v2.x,v2.y,v2.z); v2=vec_add(v2,vec_scale(n2,0.1)); glVertex3f(v2.x,v2.y,v2.z); glVertex3f(v3.x,v3.y,v3.z); v3=vec_add(v3,vec_scale(n3,0.1)); glVertex3f(v3.x,v3.y,v3.z); glVertex3f(v4.x,v4.y,v4.z); v4=vec_add(v4,vec_scale(n4,0.1)); glVertex3f(v4.x,v4.y,v4.z); glEnd();*/ }}double scalefunc( double phi ){ return(0.005*(0.2+0.8*sin(2.0*phi)));}void my_EdgeBumper( int segnr, double (*r1)(double), double (*sc)(double), int order )/* edge shows to positive x,y direction*/{ int i; double phi1,phi2,dphi1,dphi2; VMvect n10,n20,n30,n40,v10,v20,v30,v40,n1,n2,n3,n4,n5,n6,n7,n8,v1,v2,v3,v4,v5,v6,v7,v8; n10 = vec_unit(vec_xyz(-1,0,-1)); n20 = vec_unit(vec_xyz(-1,0,0)); n30 = vec_unit(vec_xyz(0,0,1)); n40 = vec_unit(vec_xyz(1,0,3)); v10 = vec_xyz(0,0,-1); v20 = vec_xyz(-1,0,0); v30 = vec_xyz(0,0,1); v40 = vec_xyz(3,0,0); for(i=0;i<segnr;i++){ phi1 = M_PI/2.0*(double)i/(double)segnr; phi2 = M_PI/2.0*(double)(i+1)/(double)segnr; dphi1 = atan((r1(phi1-0.01)-r1(phi1+0.01))/r1(phi1)/0.02); dphi2 = atan((r1(phi2-0.01)-r1(phi2+0.01))/r1(phi2)/0.02); n1 = vec_rotate(n10,vec_xyz(0,0,phi1+dphi1)); n2 = vec_rotate(n20,vec_xyz(0,0,phi1+dphi1)); n3 = vec_rotate(n30,vec_xyz(0,0,phi1+dphi1)); n4 = vec_rotate(n40,vec_xyz(0,0,phi1+dphi1)); n5 = vec_rotate(n10,vec_xyz(0,0,phi2+dphi2)); n6 = vec_rotate(n20,vec_xyz(0,0,phi2+dphi2)); n7 = vec_rotate(n30,vec_xyz(0,0,phi2+dphi2)); n8 = vec_rotate(n40,vec_xyz(0,0,phi2+dphi2)); v1 = vec_xyz(r1(phi1)*cos(phi1),r1(phi1)*sin(phi1),FRAME_DH); v2 = vec_xyz(r1(phi1)*cos(phi1),r1(phi1)*sin(phi1),FRAME_DH); v3 = vec_xyz(r1(phi1)*cos(phi1),r1(phi1)*sin(phi1),FRAME_DH); v4 = vec_xyz(r1(phi1)*cos(phi1),r1(phi1)*sin(phi1),FRAME_DH); v5 = vec_xyz(r1(phi2)*cos(phi2),r1(phi2)*sin(phi2),FRAME_DH); v6 = vec_xyz(r1(phi2)*cos(phi2),r1(phi2)*sin(phi2),FRAME_DH); v7 = vec_xyz(r1(phi2)*cos(phi2),r1(phi2)*sin(phi2),FRAME_DH); v8 = vec_xyz(r1(phi2)*cos(phi2),r1(phi2)*sin(phi2),FRAME_DH); v1 = vec_add(v1,vec_scale(vec_rotate(v10,vec_xyz(0,0,phi1)),sc(phi1))); v2 = vec_add(v2,vec_scale(vec_rotate(v20,vec_xyz(0,0,phi1)),sc(phi1))); v3 = vec_add(v3,vec_scale(vec_rotate(v30,vec_xyz(0,0,phi1)),sc(phi1))); v4 = vec_add(v4,vec_scale(vec_rotate(v40,vec_xyz(0,0,phi1)),sc(phi1))); v5 = vec_add(v5,vec_scale(vec_rotate(v10,vec_xyz(0,0,phi2)),sc(phi2))); v6 = vec_add(v6,vec_scale(vec_rotate(v20,vec_xyz(0,0,phi2)),sc(phi2))); v7 = vec_add(v7,vec_scale(vec_rotate(v30,vec_xyz(0,0,phi2)),sc(phi2))); v8 = vec_add(v8,vec_scale(vec_rotate(v40,vec_xyz(0,0,phi2)),sc(phi2))); if(!order){ glBegin(GL_QUAD_STRIP); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glNormal3f(n5.x,n5.y,n5.z); glVertex3f(v5.x,v5.y,v5.z); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glNormal3f(n6.x,n6.y,n6.z); glVertex3f(v6.x,v6.y,v6.z); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glNormal3f(n7.x,n7.y,n7.z); glVertex3f(v7.x,v7.y,v7.z); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glNormal3f(n8.x,n8.y,n8.z); glVertex3f(v8.x,v8.y,v8.z); glEnd(); } else { glBegin(GL_QUAD_STRIP); glNormal3f(n5.x,n5.y,n5.z); glVertex3f(v5.x,v5.y,v5.z); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glNormal3f(n6.x,n6.y,n6.z); glVertex3f(v6.x,v6.y,v6.z); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glNormal3f(n7.x,n7.y,n7.z); glVertex3f(v7.x,v7.y,v7.z); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glNormal3f(n8.x,n8.y,n8.z); glVertex3f(v8.x,v8.y,v8.z); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glEnd(); }/* glBegin(GL_LINES); glVertex3f(v1.x,v1.y,v1.z); v1=vec_add(v1,vec_scale(n1,0.01)); glVertex3f(v1.x,v1.y,v1.z); glVertex3f(v2.x,v2.y,v2.z); v2=vec_add(v2,vec_scale(n2,0.01)); glVertex3f(v2.x,v2.y,v2.z); glVertex3f(v3.x,v3.y,v3.z); v3=vec_add(v3,vec_scale(n3,0.01)); glVertex3f(v3.x,v3.y,v3.z); glVertex3f(v4.x,v4.y,v4.z); v4=vec_add(v4,vec_scale(n4,0.01)); glVertex3f(v4.x,v4.y,v4.z); glEnd();*/ }}double r1coverfunc_zero( double y ){ return( 0.0 );}double r1coverfunc( double y ){// return( (1.0-y*y)*0.04 ); if( y<=-1.0 || y>=1.0 ){ return 0.0;// return HOLE2_XYOFFS-BANDE_D; } else { return( HOLE2_XYOFFS-BANDE_D+sqrt(1.0-y*y)*HOLE2_R ); }}#define nonconst_step 1void my_Cover( int segnr, double (*r1)(double), double l, int order, double endtan, double tex_x, double tex_y )/* edge shows to pos x,y direction*/{ int i; double y1,y2; double tan1, tan2; VMvect n1,n2,n3,n4,v1,v2,v3,v4,v5,v6,v7,v8, v4_2,v4_3, v8_2,v8_3; double r2; r2 = FRAME_D-BANDE_D; n1 = vec_unit(vec_xyz(0,0,1)); n2 = vec_unit(vec_xyz(FRAME_DH/(FRAME_D-BANDE_D-FRAME_PHASE),0,1)); n3 = vec_unit(vec_xyz(FRAME_H-FRAME_PHASE,0,-FRAME_PHASE)); n4 = vec_unit(vec_xyz(FRAME_H-FRAME_PHASE,0,-FRAME_PHASE)); for(i=0;i<segnr;i++){ if(nonconst_step){ y1 = -l/2.0*cos(M_PI*(double)i/(double)segnr); y2 = -l/2.0*cos(M_PI*(double)(i+1)/(double)segnr); } else { y1 = -l/2.0+l*(double)i/(double)segnr; y2 = -l/2.0+l*(double)(i+1)/(double)segnr; } tan1 = endtan*y1/(l/2.0); tan2 = endtan*y2/(l/2.0); v1 = vec_xyz(r1(y1/l*2.0),y1,FRAME_DH); v1.y += tan1 * v1.x; v2 = vec_xyz(r2-FRAME_PHASE,y1,0); v2.y += tan1 * v2.x; v3 = vec_xyz(r2,y1,-FRAME_PHASE); v3.y += tan1 * v3.x; v4 = vec_xyz(r2-FRAME_PHASE,y1,-FRAME_H); v4.y += tan1 * v4.x; v4_2 = vec_xyz(r2-FRAME_PHASE-1.0*FRAME_DW,y1,-FRAME_H); v4_2.y += tan1 * v4_2.x; v4_3 = vec_xyz(r2-FRAME_PHASE-2.0*FRAME_DW,y1,-FRAME_H2); v4_3.y += tan1 * v4_3.x; v5 = vec_xyz(r1(y2/l*2.0),y2,FRAME_DH); v5.y += tan2 * v5.x; v6 = vec_xyz(r2-FRAME_PHASE,y2,0); v6.y += tan2 * v6.x; v7 = vec_xyz(r2,y2,-FRAME_PHASE); v7.y += tan2 * v7.x; v8 = vec_xyz(r2-FRAME_PHASE,y2,-FRAME_H); v8.y += tan2 * v8.x; v8_2 = vec_xyz(r2-FRAME_PHASE-1.0*FRAME_DW,y2,-FRAME_H); v8_2.y += tan2 * v8_2.x; v8_3 = vec_xyz(r2-FRAME_PHASE-2.0*FRAME_DW,y2,-FRAME_H2); v8_3.y += tan2 * v8_3.x; if(!order){ glBegin(GL_QUAD_STRIP); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 0.0*0.5*tex_y); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 0.0*0.5*tex_y); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v5.x,v5.y,v5.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 0.9*0.5*tex_y); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 0.9*0.5*tex_y); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v6.x,v6.y,v6.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 1.0*0.5*tex_y); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 1.0*0.5*tex_y); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v7.x,v7.y,v7.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 2.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 2.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8.x,v8.y,v8.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_2.x,v4_2.y,v4_2.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_2.x,v8_2.y,v8_2.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_3.x,v4_3.y,v4_3.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_3.x,v8_3.y,v8_3.z); glEnd(); } else { glBegin(GL_QUAD_STRIP); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 0.0*0.5*tex_y); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v5.x,v5.y,v5.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 0.0*0.5*tex_y); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 0.9*0.5*tex_y); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v6.x,v6.y,v6.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 0.9*0.5*tex_y); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 1.0*0.5*tex_y); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v7.x,v7.y,v7.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 1.0*0.5*tex_y); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 2.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8.x,v8.y,v8.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 2.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_2.x,v8_2.y,v8_2.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_2.x,v4_2.y,v4_2.z); glTexCoord2f((y2/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_3.x,v8_3.y,v8_3.z); glTexCoord2f((y1/l+0.5)*0.4*tex_x, 3.0*0.5*tex_y); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_3.x,v4_3.y,v4_3.z); glEnd(); } }}double r2cover_caram( double y ){ double ampl; y=fabs(y); ampl=0.03; if(y<0.2){ return( ampl*sin(2.0*M_PI*y/0.2*0.25) ); }else if(y>=0.15 && y<0.5){ return( ampl*(0.5+0.5*cos(4.0*M_PI*(y-0.15)/0.35*0.25)) ); }else if(y>=0.5 && y<0.75){ return( 0.7*ampl-0.7*ampl*cos(2.0*M_PI*(y-0.5)) ); }else if(y>=0.75 && y<=1.0){ return( 0.7*ampl-0.7*ampl*sin(3.7*M_PI*(y-0.75)) ); } return( 0.0 );/* if(y>0) return( +0.02*sin(10.0*M_PI/4.0*y) ); else return( -0.02*sin(10.0*M_PI/4.0*y) );*/}void my_Cover2func( int segnr, double (*r1)(double), double (*r2)(double), double l, int order, double endtan )/* edge shows to pos x,y direction*/{ int i; double y1,y2; double tan1, tan2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -