Einzelnen Beitrag anzeigen

Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: Kreisförmige Bewegung eines Objektes

  Alt 13. Sep 2006, 14:59
Zitat von Novilos:
Zitat von TStringlist:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Radius des Einheitskreises = 40 Dots
  X0 := Label1.left - 40;
  Y0 := Label1.top;
  Grad := 0;
  Timer1.Enabled := true
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  inc(Grad,2);
  Label1.left := X0 + round (cos(2*Pi/360 * Grad) * 40);
  Label1.Top := Y0 - round (sin(2*Pi/360 * Grad) * 40);
  if Grad = 360 then Timer1.Enabled := false
end;
Kann mir wer die Rechnung erklären? Wie das mit Sin und Cos genau abläuft? Versteh ich nicht so ganz
Danke sehr
Der Sinus eines Winkels ist Gegenkathete durch Hypothenuse. Die Hypothenuse ist der Radius des Umlaufkreises. Der ist in dem Beispiel 40. Sin(Winkel)*40 ist also die länge der Gegenkathete bei einem Winkel und dem Radius 40. Es berechnet, wie weit die Y-Position des Labels sich über dem Mittelpunkt des Kreise befindet. Ist der Sinus negativ, befindet sich das Label unterhalb des Mittelpunktes.
Cos ist Ankathete/Hypothenuse und berechnet das gleiche für die X-Position.
Die Winkel, von denen der Cosinus bzw. Sinus berechnet wird, müssen in Delphi immer in Bogenmaß statt in Grad sein. Deswegen 2*Pi/360*Grad. Das könnte man alternativ auch mit DegToRad(Grad) machen.
  Mit Zitat antworten Zitat