1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85:
| procedure TForm1.MyScene(); begin try tx:=TrackbarTx.Position/10; ty:=TrackbarTy.Position/10; tz:=TrackbarTz.Position/10;
sx:=TrackbarSx.Position/100; sy:=TrackbarSy.Position/100; sz:=TrackbarSz.Position/100;
rx:=TrackbarRx.Position; ry:=TrackbarRy.Position; rz:=TrackbarRz.Position;
sch1:=TrackbarS1.Position/100; sch2:=TrackbarS2.Position/100; sch3:=TrackbarS3.Position/100; sch4:=TrackbarS4.Position/100; sch5:=TrackbarS5.Position/100; sch6:=TrackbarS6.Position/100;
except exit; end;
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
glPushMatrix();
glTranslatef(tx,ty,tz);
if checkboxScherung.Checked then Scherungf(sch1,sch2,sch3,sch4,sch5,sch6);
if (sx<>1) or (sy<>1) or (sz<>1) then glScalef(sx,sy,sz);
if rx<>0 then glRotatef(rx,1,0,0); if ry<>0 then glRotatef(ry,0,1,0); if rz<>0 then glRotatef(rz,0,0,1);
glColor3f ( 1, 1, 1);
glBegin(GL_QUADS); glColor3f ( 1, 1, 1); glVertex3f( 1,-1, 0); glVertex3f( 1, 1, 0); glVertex3f(-1, 1, 0); glVertex3f(-1,-1, 0); glEnd;
glPopMatrix(); end;
procedure TForm1.Scherungf(s1,s2,s3,s4,s5,s6 : GLfloat); var ScherungX, ScherungY, ScherungZ : GLfloat; begin ScherungX:=1+s1+s2; ScherungY:=s3+1+s4; ScherungZ:=s5+s6+1;
Scherungsmatrix[1]:=ScherungX; Scherungsmatrix[2]:=ScherungY; Scherungsmatrix[3]:=ScherungZ; Scherungsmatrix[4]:=1;
glMultMatrixf(@Scherungsmatrix); end; |