.| Autor | Beitrag |
|---|---|
|
000 11.05.2002, 15:36 thinktank |
So komisches Prob =) : Ich will einen Vector machen, der mitten im Player liegt ( clientside). Dazu hab ich 1. v_right 2. v_forward benutzt. Nur bei v_forward würde sich dieser Vector ja verändern, wenn ich in die Luft ziele. Deshalb wollte ich in ihn 2d machen bzw. unäbhängig von der Z-Koordinate. Dabei hab ich bemerkt, dass sich forward.x und forward.y auch verändern, Dieser Beitrag wurde am 11.05.2002 um 15:37 von thinktank bearbeitet. |
|
Profil || Suche |
|
001 11.05.2002, 16:40 TheTinySteini |
Ja, genau. Und nun überleg mal ganz scharf und zeichne dir's am besten mal auf Papier auf. Dann wirst du merken, x und y müssen sich sogar ändern, wenn du nach oben guckst! Du kannst aber ohne weiteres die z-Komponente auf 0 setzen und dann den restlichen Vektor nochmal normalisieren. -- TheTinySteini |
|
Profil || Suche |
|
002 11.05.2002, 18:24 thinktank |
Stimmt. Von oben gesehen verkürzt er sich. Danke ! Hmm ich hab mir die Funktion von Normalize() angeschaut. [edit] Jetzt ändern sich forward_2d.x und forward_2d.y immer noch, wenn ich nach oben schaue. Dieser Beitrag wurde am 11.05.2002 um 19:04 von thinktank bearbeitet. |
|
Profil || Suche |
|
003 11.05.2002, 19:31 Archangel |
falls ich dich richtig verstanden habe: vec3_t angles; VectorCopy(args->angles, angles); AngleVectors(angles, forward_2d, right, NULL); --Dieser Beitrag wurde am 11.05.2002 um 19:31 von Archangel bearbeitet. |
|
Profil || Suche |
|
004 11.05.2002, 19:53 thinktank |
Hmmm es funzt, aber wo liegt der Unterschied zwischen meiner "Lösung" und deiner ? -- |
|
Profil || Suche |
|
005 11.05.2002, 19:57 Archangel |
du brauchst den vektor nicht erneut zu normalisieren.. -- |
|
Profil || Suche |
|
006 11.05.2002, 22:01 TheTinySteini |
Btw: Normalize bringt den Vektor einfach wieder auf Länge 1. Dazu berechnet man die Länge des Vektors (da muss man leider ne Wurzel ziehen -> langsam) und teilt dann den Vektor durch seine Länge. TheTinySteini |
|
Profil || Suche |
|
007 13.05.2002, 18:52 thinktank |
@Archangel : Komischerweise gings aber mit Normalisieren NICHT, also x und y haben sich immer noch geändert :/ . Das ist ja gerade das komische. Dass deine Lösung einfacher ist, hab ich sogar noch gecheckt :P. @TTT : 1-dimensionale Vektoren sind ja einfach =). Dass man den Vektoren durch Also hier nochmal beide Lösungen : Diese funktioniert NICHT :
Diese funktioniert :
Warum funktioniert also die eine, aber die andere nicht ? --Dieser Beitrag wurde am 13.05.2002 um 18:52 von thinktank bearbeitet. |
|
Profil || Suche |
|
008 13.05.2002, 20:59 TheTinySteini |
Tja, Vektorrechnung. Nimm a als einen Vektor und r als eine reelle Zahl, ja? Dann ist das Produkt aus a und r so definiert (o_O, ASCII ART!):
TheTinySteini |
|
Profil || Suche |
|
009 13.05.2002, 23:00 Another1 |
bei deiner ersten möglichkeit veränderst du den vorwärtsvector, indem du ihm seine Z komponente klaust, der zeigt von daher nun nichmehr 'vorwärts' sondern irgendwohin (so ziemlich). Bei der 2. variante machst du es richtig. angles is nämlich !kein! vector im mathematischen sinne, sondern nur eine sammlung von 3 winkeln, gespeichert in einer vektorstruktur (X = PITCH(hoch runter) Y=YAW(links,rechts) Z=ROLL(nach links/rechts kippen)). Du setzt pitch auf null, wodurch der aus dem angle resultierende vektor nich mehr nach oben/unten wegschaut, sondern genau 'am boden entlang' (den vektor kriegst du da über AngleVectors) --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
010 14.05.2002, 15:01 thinktank |
@TTT :
[/edit] Ich weiß, wie man einen Vektor mit einer Zahl multipliziert. Aber warum muss man x, y und z mit 1/ Länge multiplizieren ? Ich versuchs zu erklären : L = Länge dann ist : L² = x² + y² bzw. Hier sollte doch eigentlich 1 rauskommen , oder :/ ? @Another1 : Achso, ich dachte der v_forward wäre relativ zum Player. Danke ! --Dieser Beitrag wurde am 14.05.2002 um 15:05 von thinktank bearbeitet. |
|
Profil || Suche |
|
011 14.05.2002, 15:21 TheTinySteini |
Hmja, ist er eigentlich auch... Hab auch net gerafft, warum das nicht klappt. Aber egal, die Lösung mit den Winkeln is sowieso schöner.
Da ist ein Denkfehler drin, ind er dritten Zeile. Du hast dort nur einen Buchstaben für L, aber es sind zwei verschiedene Ls! Das eine L links vom Gleichheitszeichen ist die Länge des normalisierten Vektors, das andere ist die Länge des nicht normalisierten Vektors. Lies am besten mal hier unter "Vektoren im 3-dimensionalen Raum". -- TheTinySteini |
|
Profil || Suche |
|
012 14.05.2002, 17:22 Another1 |
er ist relativ zum player, trotzdem kannst du nich einfach z auf null setzen. Dann stimmt nämlich, wenn du danach normalisierst, das verhältnis x:y nich mehr und der vector hat seine richtung geändert, kapiche? --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
013 14.05.2002, 18:00 thinktank |
@ TTT Jetzt versteh ich gar nichts mehr :\ Ich dachte, wenn ich diese Gleichung gescheit auflöse kommt immer @A1 |
|
Profil || Suche |
|
014 17.05.2002, 13:16 thinktank |
@TTT : Die Frage ist geklärt. Mein Lehrer konnte es mir erklären =). @A1 Die Frage bleibt offen =(. -- |
|
Profil || Suche |

