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

04.03.2004, 22:50

Würfel Rotation

Hi Jungs,
wie kann ich es - als blutiger 3D Anfaenger - erreichen, dass ein
Würfel nach Rotation um x, y, z-Achse auf der Fläche liegen bleibt?
Für euch doch sicherlich ein Klacks! :crying:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

05.03.2004, 14:48

Meinst Du jetzt, dass sich der Würfel wie ein echter Würfel verhalten soll?
Das ist leider garnicht einfach, dafür braucht man schon eine Physik-Library.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

3

05.03.2004, 16:35

Kommt drauf an, wie komplizitert (also realistisch) du es haben willst!

Soll der Würfel einfach irgendwann (nach 'ner bestimmten Zeit oder durch Zufall) stehenbleiben, oder soll er langsamer werden und es irgendwann "nicht mehr um die Kante schaffen"?

Außerdem frage ich mich, ob er einfach "nur" rotieren soll oder wirklich "über die Kante rollen".

Prinzipiell kannst du ja den 2D-Winkel zum Boden durch die Transformierte Position dreier Vertices berechnen, (vielleicht könnte man ja auch die Abstände zum Boden zuerst messen???).

Tja, vielleicht sollten jetzt mal die Mathe-Profis drankommen (ich bin keiner!)...
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

4

05.03.2004, 17:26

Ich denke er meinte sicherlich eine einfache Rotation. Diese kann durch eine einfache Erstellung einer Worldmatrix erreicht werden. Alles dazu steht auf jeden fall in David's Buch.

Falls du doch meintest das der Würfel nach eine Rotation auf einer seiner Flächen zum stillstand kommen sollte, ist das schon etwas Komplizierter. So eine Diskusion hatte ich in einem Forum schon einmal. Da wollte auch jemand etwas Pysikalisches nachbilden und alle nannten ihm irgendwelche Formeln. Jedoch ist die exakte Nachbildung der echten Physik in einem Game, viel zu kompliziert und zu rechenaufwändig.

Ob der Würfel auf dem Boden liegt, kann man auf zwei Arten schnell Testen.
1) Wenn der Boden imm in der Wage liegt und sein Normalenvektor 0,1,0 ist, dann sollte der Würfel immer Glatt auf dem Boden liegen, wenn der Winkel der Z oder X Achse durch 90° teilbar ist oder NULL ist.

2) Wenn der Boden nicht wie in "1" Definiert ist, müssen die 4 Ecken einer Seite direkt auf dem Boden aufliegen.

So nun zum Rollen selber. Damit der Würfel rollt ist es nötig, das er genug Kraftüberschuss hat, damit er über eine seiner Kanten rollen kann. Beim Anschupsen führt man dem Würfel eine Kraft zu (ns). Der Würfel brauch eine gewisse Restkraft um die nächste Rollbewegung auszuführen (nr).

Rechnung:

Quellcode

1
2
3
4
5
6
7
8
9
if(ns >= nr)
{
  ns -= nr;
  // Rollen
}
else
{
  // Dies war das letzte rollmanöver weil Kraft verbraucht.
}
So wäre jetzt einfach mal mein erster Ansatz. Dieser hat keine Garantie auf Gültigkeit. Für Nebenwirkungen und Beschädigungen komme ich nicht auf ;D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

5

06.03.2004, 06:26

Vielen Dank an alle für die schnelle Unterstützung.
Wie ich schon sagte, kein Problem für echte Freaks!
PS David: Das Buch ist sein Geld wert.
:huhu:

Werbeanzeige