📄 table.c
字号:
VMvect n1,n2,n3,n4,v1,v2,v3,v4,v5,v6,v7,v8, v4_2,v4_3, v8_2,v8_3; double r2_1,r2_2; double txfact=0.75; double tyfact=6.0; 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(0){ 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); r2_1 = FRAME_D-BANDE_D+r2(y1/l*2.0); r2_2 = FRAME_D-BANDE_D+r2(y2/l*2.0); v1 = vec_xyz(r1(y1/l*2.0),y1,FRAME_DH); v1.y += tan1 * v1.x; v2 = vec_xyz(r2_1-FRAME_PHASE,y1,0); v2.y += tan1 * v2.x; v3 = vec_xyz(r2_1,y1,-FRAME_PHASE); v3.y += tan1 * v3.x; v4 = vec_xyz(r2_1-FRAME_PHASE,y1,-FRAME_H); v4.y += tan1 * v4.x; v4_2 = vec_xyz(r2_1-FRAME_PHASE-1.0*FRAME_DW,y1,-FRAME_H); v4_2.y += tan1 * v4_2.x; v4_3 = vec_xyz(r2_1-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_2-FRAME_PHASE,y2,0); v6.y += tan2 * v6.x; v7 = vec_xyz(r2_2,y2,-FRAME_PHASE); v7.y += tan2 * v7.x; v8 = vec_xyz(r2_2-FRAME_PHASE,y2,-FRAME_H); v8.y += tan2 * v8.x; v8_2 = vec_xyz(r2_2-FRAME_PHASE-1.0*FRAME_DW,y2,-FRAME_H); v8_2.y += tan2 * v8_2.x; v8_3 = vec_xyz(r2_2-FRAME_PHASE-2.0*FRAME_DW,y2,-FRAME_H2); v8_3.y += tan2 * v8_3.x; if(!order){ glBegin(GL_QUAD_STRIP); glTexCoord2f(v1.y*txfact,v1.x*tyfact); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glTexCoord2f(v5.y*txfact,v5.x*tyfact); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v5.x,v5.y,v5.z); glTexCoord2f(v2.y*txfact,v2.x*tyfact); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glTexCoord2f(v6.y*txfact,v6.x*tyfact); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v6.x,v6.y,v6.z); glTexCoord2f(v3.y*txfact,v3.x*tyfact); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glTexCoord2f(v7.y*txfact,v7.x*tyfact); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v7.x,v7.y,v7.z); glTexCoord2f(v4.y*txfact,v4.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glTexCoord2f(v8.y*txfact,v8.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8.x,v8.y,v8.z); glTexCoord2f(v4_2.y*txfact,v4_2.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_2.x,v4_2.y,v4_2.z); glTexCoord2f(v8_2.y*txfact,v8_2.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_2.x,v8_2.y,v8_2.z); glTexCoord2f(v4_3.y*txfact,v4_3.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_3.x,v4_3.y,v4_3.z); glTexCoord2f(v8_3.y*txfact,v8_3.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_3.x,v8_3.y,v8_3.z); glEnd(); } else { glBegin(GL_QUAD_STRIP); glTexCoord2f(v5.y*txfact,v5.x*tyfact); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v5.x,v5.y,v5.z); glTexCoord2f(v1.y*txfact,v1.x*tyfact); glNormal3f(n1.x,n1.y,n1.z); glVertex3f(v1.x,v1.y,v1.z); glTexCoord2f(v6.y*txfact,v6.x*tyfact); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v6.x,v6.y,v6.z); glTexCoord2f(v2.y*txfact,v2.x*tyfact); glNormal3f(n2.x,n2.y,n2.z); glVertex3f(v2.x,v2.y,v2.z); glTexCoord2f(v7.y*txfact,v7.x*tyfact); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v7.x,v7.y,v7.z); glTexCoord2f(v3.y*txfact,v3.x*tyfact); glNormal3f(n3.x,n3.y,n3.z); glVertex3f(v3.x,v3.y,v3.z); glTexCoord2f(v8.y*txfact,v8.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8.x,v8.y,v8.z); glTexCoord2f(v4.y*txfact,v4.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4.x,v4.y,v4.z); glTexCoord2f(v8_2.y*txfact,v8_2.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_2.x,v8_2.y,v8_2.z); glTexCoord2f(v4_2.y*txfact,v4_2.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_2.x,v4_2.y,v4_2.z); glTexCoord2f(v8_3.y*txfact,v8_3.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v8_3.x,v8_3.y,v8_3.z); glTexCoord2f(v4_3.y*txfact,v4_3.x*tyfact); glNormal3f(n4.x,n4.y,n4.z); glVertex3f(v4_3.x,v4_3.y,v4_3.z); glEnd(); } }}double scalefunc01( double x ){ return(scalefunc((x+1.0)*M_PI/4.0));}void my_CoverBumper( int segnr, double (*r1)(double), double (*sc)(double), double l, int order )/* edge shows to pos x,y direction*/{ int i; double y1,y2, dphi1, dphi2; VMvect v10,v20,v30,v40,n1,n2,n3,n4,n5,n6,n7,n8,n10,n20,n30,n40,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++){ if(nonconst_step){ y1 = -l*0.5*cos(M_PI*(double)i/(double)segnr); y2 = -l*0.5*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; } dphi1 = atan( (r1((y1-0.001)/l*2.0)-r1((y1+0.001)/l*2.0))/0.002 ); dphi2 = atan( (r1((y2-0.001)/l*2.0)-r1((y2+0.001)/l*2.0))/0.002 ); n1 = vec_rotate(n10,vec_xyz(0,0,dphi1)); n2 = vec_rotate(n20,vec_xyz(0,0,dphi1)); n3 = vec_rotate(n30,vec_xyz(0,0,dphi1)); n4 = vec_rotate(n40,vec_xyz(0,0,dphi1)); n5 = vec_rotate(n10,vec_xyz(0,0,dphi2)); n6 = vec_rotate(n20,vec_xyz(0,0,dphi2)); n7 = vec_rotate(n30,vec_xyz(0,0,dphi2)); n8 = vec_rotate(n40,vec_xyz(0,0,dphi2)); v1 = vec_add(vec_scale(v10,sc(y1/l*2.0)),vec_xyz(r1(y1/l*2.0),y1,FRAME_DH)); v2 = vec_add(vec_scale(v20,sc(y1/l*2.0)),vec_xyz(r1(y1/l*2.0),y1,FRAME_DH)); v3 = vec_add(vec_scale(v30,sc(y1/l*2.0)),vec_xyz(r1(y1/l*2.0),y1,FRAME_DH)); v4 = vec_add(vec_scale(v40,sc(y1/l*2.0)),vec_xyz(r1(y1/l*2.0),y1,FRAME_DH)); v5 = vec_add(vec_scale(v10,sc(y2/l*2.0)),vec_xyz(r1(y2/l*2.0),y2,FRAME_DH)); v6 = vec_add(vec_scale(v20,sc(y2/l*2.0)),vec_xyz(r1(y2/l*2.0),y2,FRAME_DH)); v7 = vec_add(vec_scale(v30,sc(y2/l*2.0)),vec_xyz(r1(y2/l*2.0),y2,FRAME_DH)); v8 = vec_add(vec_scale(v40,sc(y2/l*2.0)),vec_xyz(r1(y2/l*2.0),y2,FRAME_DH)); 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();*/ }}void my_Bande_old( float x1, float y1, float z1, /* inside up */ float x2, float y2, float z2, /* outside down */ float tan1, float tan2, int order ){/* ^ y * * | * * .z -> x * * * * 4 8 9 7 * * 0 \ / 3 * * \5_______________6/ * * 1 2 */ float dummy; VMvect p[10]; p[0]=vec_xyz(x1-(y2-y1)*tan1,y2,z1+FRAME_DH);// p[1]=vec_xyz(x1,y1,z1-(z1-z2)*0.1);// p[2]=vec_xyz(x2,y1,z1-(z1-z2)*0.1); p[1]=vec_xyz(x1,y1,z1); p[2]=vec_xyz(x2,y1,z1); p[3]=vec_xyz(x2+(y2-y1)*tan2,y2,z1+FRAME_DH); p[4]=vec_xyz(x1-(y2-y1)*tan1,y2,z2); p[5]=vec_xyz(x1-(y2-y1)*BANDE_D2RATIO*tan1,y1+(y2-y1)*BANDE_D2RATIO,z2); p[6]=vec_xyz(x2+(y2-y1)*BANDE_D2RATIO*tan2,y1+(y2-y1)*BANDE_D2RATIO,z2); p[7]=vec_xyz(x2+(y2-y1)*tan2,y2,z2); p[8]=vec_xyz(x1,y2,z1+FRAME_DH); p[9]=vec_xyz(x2,y2,z1+FRAME_DH); if( x1 > x2 ){ dummy=x1; x1=x2; x2=dummy; } if( y1 > y2 ){ dummy=y1; y1=y2; y2=dummy; } if( z1 > z2 ){ dummy=z1; z1=z2; z2=dummy; } glBegin(GL_QUADS); autonormalize_quad(p[1],p[2],p[9],p[8],order); autonormalize_quad(p[5],p[6],p[2],p[1],order); glEnd(); glBegin(GL_TRIANGLES); autonormalize_triangle(p[0],p[1],p[8],order); autonormalize_triangle(p[0],p[5],p[1],order); autonormalize_triangle(p[0],p[4],p[5],order); autonormalize_triangle(p[3],p[9],p[2],order); autonormalize_triangle(p[3],p[2],p[6],order); autonormalize_triangle(p[3],p[6],p[7],order); glEnd();}void my_Bande( float x1, float y1, float z1, /* inside up */ float x2, float y2, float z2, /* outside down */ float tan1, float tan2, int order ){/* ^ y * * | * * .z -> x * * * * 4 8 9 7 * * 0 \ / 3 * * \5_______________6/ * * 1 2 */ float dummy,sin1,sin2,cos1,cos2,r1,r2; VMvect p[12];#define BANDE_WULST 0.006 p[0]=vec_xyz(x1-(y2-y1)*tan1,y2,z1+FRAME_DH);// p[1]=vec_xyz(x1,y1,z1-(z1-z2)*0.1);// p[2]=vec_xyz(x2,y1,z1-(z1-z2)*0.1); p[1]=vec_xyz(x1,y1,z1-BANDE_WULST/2.0); p[2]=vec_xyz(x2,y1,z1-BANDE_WULST/2.0); p[3]=vec_xyz(x2+(y2-y1)*tan2,y2,z1+FRAME_DH); p[4]=vec_xyz(x1-(y2-y1)*tan1,y2,z2); p[5]=vec_xyz(x1-(y2-y1)*BANDE_D2RATIO*tan1,y1+(y2-y1)*BANDE_D2RATIO,z2); p[6]=vec_xyz(x2+(y2-y1)*BANDE_D2RATIO*tan2,y1+(y2-y1)*BANDE_D2RATIO,z2); p[7]=vec_xyz(x2+(y2-y1)*tan2,y2,z2); p[8]=vec_xyz(x1,y2,z1+FRAME_DH); p[9]=vec_xyz(x2,y2,z1+FRAME_DH); p[10]=vec_xyz(x1,y1,z1+BANDE_WULST/2.0); p[11]=vec_xyz(x2,y1,z1+BANDE_WULST/2.0); if( x1 > x2 ){ dummy=x1; x1=x2; x2=dummy; } if( y1 > y2 ){ dummy=y1; y1=y2; y2=dummy; } if( z1 > z2 ){ dummy=z1; z1=z2; z2=dummy; } r1=sqrt((FRAME_DH-BANDE_WULST)*(FRAME_DH-BANDE_WULST)+(y2-y1)*(y2-y1)); sin1=fabs((FRAME_DH-BANDE_WULST)/r1); cos1=fabs((y2-y1)/r1); r2=sqrt((y2-y1)*BANDE_D2RATIO*(y2-y1)*BANDE_D2RATIO+(z1-z2)*(z1-z2)); sin2=fabs((y2-y1)*BANDE_D2RATIO/r2); cos2=fabs((z1-z2)/r2); glBegin(GL_QUADS); autonormalize_quad(p[10],p[11],p[9],p[8],order); autonormalize_quad(p[5],p[6],p[2],p[1],order); if(!order){ glNormal3f(0,-sin1,cos1); glVertex3f(p[10].x,p[10].y,p[10].z); glNormal3f(0,-sin1,cos1); glVertex3f(p[11].x,p[11].y,p[11].z); glNormal3f(0,-cos2,-sin2); glVertex3f(p[2].x,p[2].y,p[2].z); glNormal3f(0,-cos2,-sin2); glVertex3f(p[1].x,p[1].y,p[1].z); }else{ glNormal3f(0,-cos2,-sin2); glVertex3f(p[1].x,p[1].y,p[1].z); glNormal3f(0,-cos2,-sin2); glVertex3f(p[2].x,p[2].y,p[2].z); glNormal3f(0,-sin1,cos1); glVertex3f(p[11].x,p[11].y,p[11].z); glNormal3f(0,-sin1,cos1); glVertex3f(p[10].x,p[10].y,p[10].z);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -