|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 31.07.2002, 15:37 Titel: 3D Mathematik |
|
|
Hi,
ich hab Probleme mit der 3D Mathematik und hab gehofft ihr könnt mir helfen...
Und zwar bei den Planes. Ich weiß, wie ich mir ne Plane vorstellen kann und was das ist usw. Ich weiß aber nicht genau was ich mit der Formel für Planes anfangen soll, was sie überhaupt heißt, wie sie abgeleitet wurde,.......
Formel:
"
ax+by+cz+d=0
"
a,b,z repräsentieren einen Schnittpunkt auf der Linie des Planes (was ist ein Schnittpunkt auf der Linie des Planes ?)
d ist dessen Entfernung vom Koordinatenursprung
x,y,z repräsentiren jeden beliebigen Punkt in der Plane
Kann mir das bitte jemand erklären???
Der Schnittpunkt wird auch als Normal bezeichnet und und kann sich in beide Richtungen von dem Plane wegbewegen.
Versteh ich genauso wenig.
BITTE ERKLÄRT MIR DAS IRGENDEINER!!!
VIELEN DANK! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 31.07.2002, 18:11 Titel: |
|
|
Das ist schon "wesentlich" hohere Mathematik.
Die Formel ist ungefär das, was bei einer Quadratischen Funktion die Lösungsformal -p/2 +/- Wurzel(p/4 * q^2), nur bezogen auf e Vektoren, die eine Ebene genau definieren.
Wie sie genau abgeleitet wurde, was die einzelnen Komponenten bedeuten usw. kann ich dir auf die schnelle nicht sagen, aber die Theorie dazu findet man unter anderem auch in der DXSDK...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 31.07.2002, 18:50 Titel: |
|
|
Ob das höhere Mathematik ist oder nicht, in meinem Buch steht drin, dass das die Grundlagen der 3D-Mathematik seien... und wenn ich weitermachen will (und das will ich!!!) muss ich das Zeug irgendwie verstehen.
Die Herleitung ist ja eigentlich nicht wichtig, aber ich will gern wissen wozu sie verwendet wird, was ein Schnittpunkt auf der Linie des Planes ist, was es mit diesem Normal auf sich hat (was es bezwecken soll, etc.) und so weiter...
PS:
Ich gehe (nach den Ferien) erst in die 10. Klasse und deine Gleichung hat mir leider auch nicht weitergeholfen
PPS:
Wo ist die Dokumentation zum SDK versteckt??? |
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 31.07.2002, 19:18 Titel: |
|
|
DX-Doku:
Start->Programme->Microsoft DirectX 8 SDK->DirectX Dokumentation(Visual C++) |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 31.07.2002, 23:04 Titel: |
|
|
Die Formel, die ich aufgeschrieben habe, ist doch nur die Lösungsformel einer quadratischen Gleichung. Das Ding hast du garantiert schon in der 8. Klasse gehabt, da bin ich mir sicher, wenn nicht sogar schon eher.
Aber dein anderer Einwand, daß das die Grundlagen der 3D-Mathematik seien, mag zwar richtig sein, aber Grundlagen in 3D-Mathematik sind trotsdem höhere Mathematik. Nur zur Info: Man muß mit 4-Dimensionalen Vektoren sogenannte Matrizenberechnungen anstellen. Alle 3D-Operationen lassen sich auf 4D-Matrizen abbilden. Dazu gehören: Drehen, Verschieben, Skalieren, Kamera positionieren, Abbildung von 3D auf 2D, Diverse besondere Darstellungsmöglichkeiten, wie Parrallelprojektion, Isometrische Perspektive usw. Deine genannte Formel ist ein kleiner Teil, um so eine 4D-Matrix auszurechnen.
Der Vorteil der 4D-Matrizen ist, das sich mehrere Rechenschritte in einer Matriz zusammenfassen lassen, also wenn du z.B. ein Objekt erst Skalieren, dann drehen, dann verschieben willst, kannst du alle 5 4D-Matrizen in eine reinhauen und mußt am Ende nur noch wissen, wie das Ergebnis abgelesen werden muss. (5 Matrizen, weil Kameraposition und 3D auf 2D Projektion auch noch 2 Martizen sind.)
Dieses Wissen ist aber nur dann notwendig, wenn du selbst 3D-Routinen entwerfen willst. Da du aber Direct3D-Routinen verwenden willst, sind die Dinge für dich transparent in DirectX eingebaut und können als Vorhanden gelten. Maximal im Bereich von Kollisionsabfragen muß man noch selbst zur Mathematik greifen, um z.B. die Entfernung eines Punktes im Raum von einer Ebene im Raum zu bestimmen.
Dafür gibt es vorgefertigte Formeln (in jedem besseren Tafelwerk), in die man nur noch einsetzen muss. (Ablesen sollte man dann aber auch noch können). Da wären z.B. Formel, zur Bestimmung des Durchschlagpunktes von einer Linie durch eine Ebene, die Bestimmung der Geraden, in der sich 2 Ebenen schneiden, die Bestimmung eines Punktes, in der sich 3 Ebenen schneiden... Alles ziemlich trocken und sicherlich nicht trivial.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 01.08.2002, 08:43 Titel: |
|
|
Ist der Theorieteil wirklich so unnötig? Soll ich ihn weglassen und mit dem Direct3D Teil anfangen? |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 01.08.2002, 11:06 Titel: |
|
|
Du kannst ja erst mal anfangen, und wenn du dann wirklich etwas brauchst, schaust du in entsprechender Literatur nach. Deine 1. 3D-Programme werden sicherlich noch keine aufwendigen Kollisionsberechnungen benötigen, von 100000 Polygon-Indoor-Leveln mal ganz zu schweigen. Du wirst dich erst mal freuen, wenn du einen Drehenden Würfel programmieren kannst, und ihn dann auch noch mit einer Textur überziehen kannst...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 23.09.2002, 12:15 Titel: |
|
|
Hi, um das Thema nochmal aufzugreifen:
ich hab Probleme mit der Matrizenrechnung. Und zwar gibt der Autor meines Buches 3 Matrizen (1 pro Achse) zum rotieren eines Prunktes um die jeweilige Achse an.
Da sieht die Erste zum Beispiel so aus (um X-Achse rotieren):
1|0|0
0|cos(#)|sin(#) // "#" ist so ne Art 0 mit ner horizontalen welligen Linie in der Mitte.
0|-sin(#)|cos(#)
Mein Problem besteht jetzt darin, dass ich nicht weiß, was "cos(#)" und "sin(#)" heisen. Ich hab zwar mal was von Kosinus gehört, weiß aber nicht was das ist/heist .
Falls es euch hilft, diese Matrize multipliziert man mit man dann mit einer 1x3 Matrize für die x,y,z Werte des zu Rotierenden Punktes:
x
y
z
Mein Mathe-Lehrer hat das leider nicht verstanden, aber da hier Leiter superintelligente 3D-Mathematiker sind (*schleim*) hoffe ich, dass sie mir in ihrer (fast-) unendlichen Weisheit (*superschleim*) helfen können!
Cu,
VH (*tropf*,*tropf*) |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 23.09.2002, 14:16 Titel: |
|
|
sin(winkel) = gegenkathete / hypothenuse
cos(winkel) = ankathete / hypothenuse
dann gibts noch den tangens:
tan(winkel) = gegenkathete / ankathete
mit den funktionen kannst du einen winkel oder die katheten in einem dreieck ausrechnen. |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 23.09.2002, 14:33 Titel: |
|
|
Wie sind die Funktionen (sind doch mathematische Funktionen, so wie F(x), nur für Winkel?) definiert?
Also in meinem Buch gibts die Matrize für die Rotation eines Punktes um die Z-Achse, die sieht so aus:
cos(Winkel) | sin(Winkel) | 0
-sin(Winkel)| cos(Winkel)| 0
0 | 0 | 1
Und dann gibts da ein Beispiel der Matrize mit einer Rotation des Punkte mit einem Winkel von 45° :
0.707 | 0.707 | 0
-0.707| 0.707 | 0
0 | 0 | 1
Was für ein Rechenvorgang wird bei den Funktionen cos(Winkel) und sin(Winkel) ausgeführt? |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 23.09.2002, 14:54 Titel: |
|
|
das ist doch eingentlich unwichtig, wie bei sin und cos usw berechnet wird.
wichtig ist doch, was man damit machen kann. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.09.2002, 15:17 Titel: |
|
|
Unwichtig ist das nicht.
Der Sinus eines Winkels ist die Y-Koordinate des Schnittpunktes des freien Schenkels eines Winkels mit dem Einheitskreis(Ein Kreist mit dem Radius 1). Der Kosinus ist dann dementsprechen die X-Koordinate.
"Was ist ein freier Schenkel" - der freie Schenkel des Winkels ist frei beweglich, der andere liegt genau auf der X-Achse(y = 0).
So kann man z.B. Richtungsvektoren erzeugen:
Code: |
int speed_x = cos(WINKEL) * speed;
int speed_y = sin(WINKEL) * speed; |
Wichtig ist noch, dass die Winkel im Bogenmaß anzugeben sind. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 23.09.2002, 15:31 Titel: |
|
|
hm, meinst du jetzt, wie die funktion von sinus und cosionus ist oder was man damit ausrechnet? |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.09.2002, 15:51 Titel: |
|
|
Das obere ist die Definition von Sinus und Kosinus und der Code ist ein Anwendungsbeispiel. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 23.09.2002, 18:29 Titel: |
|
|
@ Hazel: Hast du ein Bild davon, mit dem Einheitskreis und dem ganzen Zeug? Könntest es mir auch mailen, wär echt nett! Und wenn du schon dabei bist, könntest du (oder jemand anders der es kapiert) dann mal erklären wie man von 45° auf 0,707 kommt (bei der Besispielsmatrize).
Cu,
VH |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|