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.11.2012, 12:42

Rotation von Planeten um Sonne - tbObject

Hallo Forum,

ich habe ein Problem bezüglich der umsetzung einer Rotation von Planeten um die Sonne. Die Planeten haben alle von einer Klasse namens tbObject geerbt, welche in der TriBase Engine vorhanden ist. Ich bekomme es aber einfach nicht hin eine vernünftige Rotation hinzubekommen um die Sonne. Ich habe schon Beiträge über das Rotieren um einen Punkt gelesen, jedoch nicht so richtig verstanden. Mit sinus und cosinus Funktionen sollte man eine schöne Rotation hinbekommen.

Hoffe ihr könnt mir helfen.


Betece

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

2

18.11.2012, 12:57

So siehts bei mir aus:

C-/C++-Quelltext

1
2
3
4
sf::Vector3f OrbitCalculator::calcLocalPosition() const
{
    return sf::Vector3f(std::cosf(angle)*radius, -std::sinf(angle)*radius, 0.f);
}

Der Vektor muss natürlich noch mit der Position des Sterns addiert werden.
"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?

3

18.11.2012, 13:06

Danke für die schnelle Antwort (:

und den resultierenden Vektor nimmste dann als Positionvektor von dem jeweiligen Planeten?

Gruß betece

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

4

18.11.2012, 13:10

Wenn du damit meinst, dass er an dieser Position gezeichnet wird hast du recht, jedenfalls wenn man sich in der Übersichtskarte befindet.
"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?

5

18.11.2012, 13:24

Wenn ich das so übernehme:

m_vPosition += tbVector3(cosf(1.5f) * this->m_fRadius, 0.0f, sinf(1.5f) * this->m_fRadius);

dann bewegt sich der Planet einfahc nach unten und verschwindet.

Hab ich irgendwas falsch gemacht?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

6

18.11.2012, 13:27

Es müsste wohl eher so aussehen:

C-/C++-Quelltext

1
2
angle = std::fmod((currentTimeInSeconds / orbitalPeriodInSeconds) * (M_PI*2) + startAngle, M_PI*2);
m_vPosition = tbVector3(cosf(angle) * this->m_fRadius, 0.0f, sinf(angle) * this->m_fRadius) + starPosition;
"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?

Werbeanzeige