
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.