Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.09.2012, 17:44

Konstante Geschwindigkeit bei variierendem Radius

Hallo.
Ich habe folgendes Problem. Ich habe zwei Punkte. Der eine Punkt rotiert in einer Kreisbahn um den anderen Punkt. Ich mache das indem ich den Winkel in jedem Frame erhöhe und dann mit dieser Formel rotiert: http://stackoverflow.com/questions/78647…int-by-an-angle
Jetzt hab ich aber folgendes Problem: Wenn ich den Radius verändere, verändert sich auch die Geschwindigkeit mit der sich der Punkt bewegt. Wie kriege ich es hin, das sich die Geschwindigkeit mit der sich der Winkel ändert proportional zum Radius verändert?
Ich hoffe ihr habt verstanden was ich meine :)
Danke schonmal, Foaly

FSA

Community-Fossil

  • Private Nachricht senden

2

18.09.2012, 18:36

Ich verstehe es gerade nicht :D
Du sagst, die Geschwindigkeit verändert sich mit dem Radius. Das willst du nicht. Aber dann sagst du Geschwindigkeit proportional verändern. Das kann irgendwie nicht sein :P

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

18.09.2012, 19:07

Momentan gibst du nur die Winkelgeschwindigkeit an.
Du kannst die Bahngeschiwndigkeit relativ einfach berechnen: vBahn = vWinkel/360*radius*2*PI
Für die andere richtung musst du einfach nach vWinkel auflösen: vWinkel = vBahn/(radius*2*PI)*360

Falls du mit dem Bogenmaß arbeitest kannst du die 360 einfach durch 2*PI ersetzen.

Ich hoffe die die Formeln sind richtig, bin gerade etwas neben der Spur... ;)

EDIT: ich war wirklich neben der Spur... Jetzt stimmen die Formeln.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (19.09.2012, 10:28)


4

18.09.2012, 21:04

Ja genau das ist es was ich möchte. Eine Rotation bei konstanter Bahngeschwindigkeit, bei variablem Radius.
Also muss ich einfach die Winkelgeschwindigkeit so berechnen: vWinkel = 360*radius*2*PI/vBahn ? Aus dem Wikipediaartikel werde ich nämlich irgendwie nicht so richtig schlau :D

Edit: Ich hab das ganze mal ausprobiert:

C-/C++-Quelltext

1
theta = 2 * M_PI * radius * 2 * M_PI / 20;

Aber das ganze ist noch genau wie vorher. Je größer der Radius desto schneller bewegt sich der Punkt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Foaly« (18.09.2012, 22:17)


Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

18.09.2012, 22:38

Ich kenne die genaue Formel nicht.
Aber du musst auf jedenfall durch den Radius teilen und nicht multiplizieren.

Deine "Formel" erscheint mir übrigens als totaler Quack.
Wenn man vereinfacht, kommt man auf theta = radius * M_PI * M_PI / 5;
Der Sinn davon erschliesst sich mir nicht.

Um es mal nicht einheitentreu ganz kurz und einfach aber richtig Umgestellt zu formulieren:
Winkelgeschwindigkeit = Bahngeschwindigkeit / Radius

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

18.09.2012, 22:57

Ist doch eigentlich ganz einfach:
§\omega=\frac{v}{r}§

Die Winkelgeschwindigkeit ergibt sich, indem du die Bahngeschwindigkeit durch den Radius teilst.

7

18.09.2012, 23:05

hmm ok. Kann ich die Bahngeschwindigkeit frei wählen? Sagen wir mal ich will das in 2 Sekunde der Punkt einen vollen Kreis macht. Mach ich das so?

C-/C++-Quelltext

1
        theta = 2 * 2 * M_PI * fTime / (radius + 1); 

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

8

18.09.2012, 23:15

Prinzipiell ja. Du musst eben dafür sorgen, dass v = (1 * pi) Einheiten pro Sekunde.

Deine Formel stimmt soweit. Ich kann jedoch nicht nachvollziehen, warum du M_PI mit 4 multiplizierst. 1 sollte doch genügen (2*pi entspricht 360°, pi entspricht 180°)? Ich nehme an, dass du den Radius um 1 erhöhst, um eine Division durch 0 zu vermeiden? Dieser Weg ist keine besonders gute Lösung dazu.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

19.09.2012, 06:37

Kann ich die Bahngeschwindigkeit frei wählen? Sagen wir mal ich will das in 2 Sekunde der Punkt einen vollen Kreis macht. Mach ich das so?

Ja, du kannst sie frei wählen. Allerdings darfst du dann nicht sagen, dass der Punkt eine bestimmte Anzahl von Umdrehungen pro Sekunde schafft, das wäre ja wieder die Winkelgeschwindigkeit (in dem Fall 180°/s).
Du müsstest bestimmen welche Strecke pro Sekunde zurückgelegt wird. Dann macht der Punkt aber, je nach Radius, sehr viel mehr oder weniger Umdrehungen pro Sekunde.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

10

19.09.2012, 07:19

Ok gut. Und wie berechne ich die Strecke die der Punkt pro Sekunde zurücklegt? Bleiben wir einfach dabei und sagen ich will 180 grad / 1 Sekunde. Wie würde ich das berechnen?

@burningwave: genau die + 1 war um die Division durch 0 zu vermeiden. Wie sollte ich das sonst lösen? Und das zweite *2 war gedacht, weil ja eine Umdrehung 2 Sekunden dauern sollte, aber die Rechnung stimmt ja eh so nicht, also egal :D

Werbeanzeige