123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- unit fOdeMachine;
- interface
- uses
- System.SysUtils,
- System.Classes,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- GLS.Scene,
- GLS.Objects,
- GLS.SceneViewer,
- Physics.ODEManager,
- GLS.VectorGeometry,
- GLS.Cadencer,
- GLS.GeomObjects,
- GLS.HUDObjects,
- GLS.BitmapFont,
- GLS.WindowsFont,
-
- GLS.Coordinates,
- GLS.BaseClasses,
- Imports.ODE;
- type
- TFormOdeMachine = class(TForm)
- GLScene1: TGLScene;
- GLSceneViewer1: TGLSceneViewer;
- GLCamera1: TGLCamera;
- GLDummyCube1: TGLDummyCube;
- GLODEManager1: TGLODEManager;
- GLODEJointList1: TGLODEJointList;
- Machine: TGLDummyCube;
- Axle: TGLCylinder;
- GLLightSource1: TGLLightSource;
- Wheel: TGLCylinder;
- Pin1: TGLCylinder;
- Arm: TGLCube;
- Slider: TGLCube;
- Pin2: TGLCylinder;
- GLCadencer1: TGLCadencer;
- ODERenderPoint: TGLRenderPoint;
- GLHUDText1: TGLHUDText;
- GLWindowsBitmapFont1: TGLWindowsBitmapFont;
- procedure GLSceneViewer1MouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
- X, Y: Integer);
- procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- private
- public
- mx, my: Integer;
- end;
- var
- FormOdeMachine: TFormOdeMachine;
- //---------------------------------------
- implementation
- //---------------------------------------
- {$R *.dfm}
- procedure TFormOdeMachine.GLSceneViewer1MouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- mx := X;
- my := Y;
- end;
- procedure TFormOdeMachine.GLSceneViewer1MouseMove(Sender: TObject;
- Shift: TShiftState; X, Y: Integer);
- begin
- if ssLeft in Shift then
- GLCamera1.MoveAroundTarget(my - Y, mx - X);
- mx := X;
- my := Y;
- end;
- procedure TFormOdeMachine.GLCadencer1Progress(Sender: TObject; const deltaTime,
- newTime: Double);
- var
- velWheel,
- velPin2 : PdVector3;
- begin
- GLODEManager1.Step(deltaTime);
- velWheel := dBodyGetAngularVel(TGLODEDynamic(Wheel.Behaviours[0]).Body);
- velPin2 := dBodyGetLinearVel(TGLODEDynamic(Pin2.Behaviours[0]).Body);
- GLHUDText1.Text := Format('Wheel Angular Velocity (Y-Axis) = %.1f' + #13#10 +
- 'Pin2 Linear Velocity (X-Axis) = %.1f', [velWheel[1], velPin2[0]]);
- end;
- end.
|