Этот код рисует полый цилиндр мне непонятно каким способом задаётся поверхность *****glBegin(vmode[tek_mode]);*****
| Код | const H : integer = 45; Fi:real=20; alpha : real = 0.2; m:real= 0.6; d : integer = 15; l:real=1; pers : integer = 30; vmode : array [0..4] of integer =(2,gl_polygon,gl_polygon,gl_points,gl_polygon); tek_mode : integer = 0; tek_vec : byte = 0; num_vec : array [0..4] of byte = (90,36,18,12,6); num_grad : array [0..4] of byte = (2,5,10,15,30);
procedure tform2.CreateFig; var i,j,k: longint; AppPath: string; angl_i,angl_i2 : real; x,y : real; tx,ty,tz :real; g,r:real; begin glNewList(CubeModel,GL_COMPILE); r:=0; g:=1/(2*num_vec[tek_vec]); if mater then gltexcoord2f(0,r) else glcolor3f(1,0,0) {цвет примитивов} ; for j:=0 to (360 div num_grad[tek_vec])-1 do begin angl_i:=j*num_grad[tek_vec]*pi/180; angl_i2:=(j+1)*num_grad[tek_vec]*pi/180; tx:=cos(angl_i)*(d/100); ty:=sin(angl_i)*(d/100); x:=cos(angl_i2)*(d/100); y:=sin(angl_i2)*(d/100);
{рисуем цилиндр} *****glBegin(vmode[tek_mode]);***** gltexcoord2f(0.25,r); glNormal3f(cos(angl_i),sin(angl_i),0); glVertex3f(cos(angl_i)*(d/100),sin(angl_i)*(d/100),-h/100); gltexcoord2f(1,r+g); glVertex3f(tx,ty,h/100); gltexcoord2f(1,r+g); glVertex3f(x,y,h/100); gltexcoord2f(0.25,r); glVertex3f(cos(angl_i2)*(d/100),sin(angl_i2)*(d/100),-h/100); glEnd; r:=r+g; end;
|
|