AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kreisförmige Bewegung eines Objektes

Ein Thema von ErdNussLocke · begonnen am 12. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 3 von 3     123   
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
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: Kreisförmige Bewegung eines Objektes

  Alt 13. Sep 2006, 15:46
Hier nochmal ein ganz trivialer Erklärungsversuch: Du kennst doch bestimmt die Sache mit dem Einheitskreis und dem rechtwinkligen Dreieck darin. Die Hypotenuse dieses Dreieckes ist dabei nämlich immer der Kreis-Radius, der, wenn der Winkeln zur X-Achse langsam aber stetig zunimmt, dann natürlich auch jeden Punkt auf dieser Kreisbahn berühren kann. Und um nun rechnerisch zu diesen Punkten auf der Kreisbahn zu kommen, brauchst man jetzt nur noch mehr zu einer Ausgangsposition diejenigen Längen dazuaddieren, die dieser Radius (=Hypotenuse) jeweils auf die X- u. auf die Y-Achse projiziert ergibt. Und genau diese Projektionslängen sind nunmal die Ergebnisse dieser Sinus- und Kosinus-Funktionen... (Wie die jetzt mathematisch genau definiert sind, wird ja schon teilweise darüber beschrieben)


edit: Die obige Erklärung gilt, wenn die dort erwähnte Ausgangsposition (X0/Y0) immer der Kreismittelpunkt ist ...und daher musste das X0 vor dem eigentlichen Start des Timers dann eben auch immer zuerst noch auf diesen Kreismittelpunkt umgesetzt werden muss (X0 := Label1.left - 40)! ~~~ nur der absoluten Nachvollziehbarkeit halber ~~~
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz