Ich habe eine OpenGl-Szene die ich per Rechte Maustastegedrückt & Mausbewegung Rotieren lassen möchte. Soweit so gut, die Szene dreht sich auch schön, aber jedes Mal wenn ich von der rechten Maustaste runtergehe und dann die Drehung neu Anfange springt die Szene.
Hier mein Quelltext zur Drehung:
View ist ein Array of Real wobei
[0] die Drehung entlang der y-Achse darstellt und
[1] die Drehung entlang der x-Achse
Delphi-Quelltext
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:
| procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssRight in Shift) then begin if (Oldx=0) and (Oldy=0) then begin Oldx:=x; Oldy:=y; end else begin View[0]:=Oldx-x*1.5; View[1]:=Oldy-y*1.5; if View[0]>360 then View[0]:=View[0]-360; if View[1]>360 then View[1]:=View[1]-360; Oldx:=x/2; Oldy:=y/2; end; end; end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Oldx:=0; Oldy:=0; end; |