Autor Beitrag
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 31.10.04 11:50 
Für alle, die's richtig haben wollen:

ausblenden Delphi-Quelltext
1:
2:
3:
Inc(Winkel);
X := X + Round(Radius * sin(2 * Pi * Winkel / 180));
Y := Y + Round(Radius * cos(2 * Pi * Winkel / 180));

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 31.10.04 11:54 
BenBE hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
Inc(Winkel);
X := X + Round(Radius * sin(2 * Pi * Winkel / 180));
Y := Y + Round(Radius * cos(2 * Pi * Winkel / 180));
Ich denke nicht, dass das richtig ist. Zum einen definiert man den Winkel meist zwischen x-Achse und Radius, positiv gegen den Uhrzeigersinn. Dann ist, wenn der Winkel 0 ist, X maximal. Bei Dir ist es minimal. Zum anderen macht das "X + ..." keinen Sinn. Das "..." reicht. Lediglich ein Offset zur Verschiebung des Mittelspunktes kann noch mit rein!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: So 31.10.04 14:18 
Der Ansatz mit X:=X+... ist völliger Quatsch. Wies richtig geht haben wir ja viel weiter vorne in diesem Thread bereits erklärt. Nur ein gewisser User wollte das noch nicht glauben. :roll:

Kann man diesen Thread nicht schließen?

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 31.10.04 14:58 
Also ich sehe das Problem nicht. Chef hat die Lösung doch schon geschrieben:
ausblenden Delphi-Quelltext
1:
2:
Button1.Left:=Round(Cos(Winkel)*Radius)+Mittelpunkt.X;
Button1.Top:=Round(Sin(Winkel)*Radius)+Mittelpunkt.Y;

Zu ergänzen wäre evt. noch, dass Winkel natürlich eine Gleitkommazahl sein sollte, die pro Intervall um 0.1 erhöht wird. Dadurch wird ein zu schnelles Springen des Objekts verhindert.