.| Autor | Beitrag |
|---|---|
|
000 10.02.2002, 13:58 apfelkorn |
Also Impulse sind ja bekanntlich Vektoren, bestehend aus Betrag, Richtung und Orientierung... Wie kann ich jetzt diesen Drei-Dimensionalen Vektor addieren? Mein Problem ist folgendes: Ich brauche möglichst was universelles, was ich für alle Winkel von 0 bis 360 einsetzen kann für horizontalen und vertikalen Winkel... typedef struct angle3d_s typedef struct impulse_s Dieser Beitrag wurde am 10.02.2002 um 14:02 von apfelkorn bearbeitet. |
|
Profil || Suche |
|
001 10.02.2002, 18:26 Tron |
wie waers du nimm einfach nen ganz normalen vektor? also 3 float x, y, z 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
002 10.02.2002, 19:16 apfelkorn |
okay, es ist leider nicht ganz so einfach tron... Mein Problem ist jetzt folgendes: Deshalb die Frage: Wie zum Geier addiere ich zwei Vektoren? -- |
|
Profil || Suche |
|
003 10.02.2002, 20:36 TheTinySteini |
Ehem, hat da jemand Vektoren falsch verstanden oder will da jemand ganz andere Vektoren einsetzen? TheTinySteini |
|
Profil || Suche |
|
004 10.02.2002, 22:38 Another1 |
jo apfelkorn, die normal vektor addition is vollkommen ausreichend, du musst die vektoren nich in winkeln + betrag darstellen. das is alles was du brauchst --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
005 10.02.2002, 23:17 anothergb02 |
da falls du die Winkelschreibweise benutzt .... *g* Being in john Malkovich |
|
Profil || Suche |
|
006 11.02.2002, 00:52 dp Administrator |
vielleicht ganz hilfreich .. www.flipcode.com/geometry -- |
|
Profil || Suche |
|
007 11.02.2002, 11:05 apfelkorn |
okay, ich habe sogenannte "Bounce Vectors", wie auf paulchens seite beschrieben. Kann mir trotzdem jetzt jemand sagen, wie ich die Impulse jetzt addiere, rechnerisch? Ich möchte nämlich keinesfalls geometrische Vektoren darstellen, sondern einfach nur den Impuls, der jetzt auf das Objekt einwirkt, und dazu brauch ich nunmal die "Bounce Vectors". Winkel ist ja schon klar... da wählen wir den Mittelwert der beiden Winkel...aber wie mach ich das mit dem Betrag? -- |
|
Profil || Suche |
|
008 11.02.2002, 14:32 Tron |
mannmannmann.... btw: mit winkel mitteln beim addieren ist es nicht getan 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
009 11.02.2002, 14:37 Tron |
1. es heisst 'bound vector', also ortsvektor die position eines koerpers ist ein ortsvektor (mit dem Urspung als bezugspunkt) 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
010 11.02.2002, 17:39 TheTinySteini |
Naja, apfelkorn geht vermutlich nach dem Motto: Warum einfach, wenn's auch kompliziert geht... --TheTinySteini |
|
Profil || Suche |
|
011 14.02.2002, 14:39 apfelkorn |
bounce vektor, bound vektor... egal, ihr wisst was gemeint ist :) ich bin ja offen für vorschläge: wie kann ich denn nun diesen freien vektor zu einem anderen addieren? Is mir egal ob ichs umwandel in einen ortsgebundenen vektor, hauptsache ihr sagt mir, wie ich es denn umwandeln kann... Das addieren von ortsgebundenen vektoren wurde ja jetzt schon zur genüge erklärt :) p.s.: eine gute sache hat dieser thread ja... wir lernen alle mehr über vektoren -- |
|
Profil || Suche |
|
012 14.02.2002, 14:49 Prefect |
Also ich persönlich würde ja deinen esoterischen Vektor mit Winkeln und so in einen vernünftigen, normalen Vektor umwandeln, die beiden Vektoren addieren, und dann (wenn's denn _unbedingt_ sein muß) zurückverwandeln. Sicher, keine besonders schöne Lösung, aber mit Winkeln in 3D zu rechnen ist _ätzendst_. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
013 14.02.2002, 20:28 apfelkorn |
aber wenn man ne halbwegs vernünftige 3d-engine basteln will unumgänglich... -- |
|
Profil || Suche |
|
014 14.02.2002, 22:08 Tron |
apfelkorn, nimm ganz normale vektoren... ich arbeite auch an einer 3d-engine und wuerde nicht im (alp)traum daran denken, vektoren in polarkoordinatenform zu benutzen! ich vermute mal, dass du quake zu den <zitat>halbwegs vernünftige[n] 3d-engine[s]</zitat> zaehlst und JC hat auch ganz normale vektoren benutzt. ganz einfach: 3 floats - fuer jede raumrichtung eine - das genuegt zur inspiration meine vektor-klasse: #include <math.h> class Vector inline Float Length() const; inline Vector operator + (const Vector&) const; inline Vector& operator = (const Vector&); inline Bool operator == (const Vector&) const; inline Float& operator [] (const UInt); inline operator Float* (); friend inline Vector operator * (Float, const Vector&); union inline Vector::Vector() : x(0.0f), y(0.0f), z(0.0f) inline Vector::Vector(Float pScalar) : x(pScalar), y(pScalar), z(pScalar) inline Vector::Vector(Float pX, Float pY, Float pZ) : x(pX), y(pY), z(pZ) inline Vector::Vector(const Float* pVector) : inline Float Vector::Length() const inline Float Vector::Length2() const inline Vector& Vector::Normalize() inline Vector Vector::Normalized() const inline Vector& Vector::Set(Float pX, Float pY, Float pZ) inline Vector Vector::operator + (const Vector& pVector) const inline Vector Vector::operator - () const inline Vector Vector::operator - (const Vector& pVector) const inline Float Vector::operator * (const Vector& pVector) const inline Vector Vector::operator * (Float pScalar) const inline Vector Vector::operator / (Float pScalar) const inline Vector Vector::operator ^ (const Vector& pVector) const inline Vector& Vector::operator = (const Vector& pVector) inline Vector& Vector::operator += (const Vector& pVector) inline Vector& Vector::operator -= (const Vector& pVector) inline Vector& Vector::operator *= (Float pVector) inline Vector& Vector::operator /= (Float pScalar) inline Bool Vector::operator == (const Vector& pVector) const inline Bool Vector::operator != (const Vector& pVector) const inline Float& Vector::operator [] (UInt pIndex) inline Vector::operator Float* () inline Vector operator * (Float pScalar, const Vector& pVector) #endif --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
015 14.02.2002, 23:10 TheTinySteini |
Tron, meinst du nicht, dass du da _etwas_ übertreibst? Ich bezweifle ernsthaft, dass du wirklich alle Funktionen brauchst, die du da in die Klasse gepackt hast. Das führt doch eher zu immer wieder anderem Code, eher unstrukturiertem Programmieren und so weiter... und * und ^ für Dotproduct und Crossproduct zu verwenden halte ich für gewagt, da würde ich lieber vernünftige Namen vergeben. Die Gefahr is doch ziemlich groß, dass da Verwechslungen auftreten. --TheTinySteini |
|
Profil || Suche |
|
016 14.02.2002, 23:28 Tron |
hmm... ne, finde ich nicht ich verwende die meissten methoden (denke ich doch...), welche wuerdest du weglassen? das mit * und ^ ist geschmackssache, ich arbeite gern mit infix-operatoren, daher finde ich das sehr elegant ich bin fuer kritik offen, aber dann machen wir doch lieber 'nen extra thread: die perfekte vektorklasse (; 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
017 15.02.2002, 15:09 apfelkorn |
hm... okay, ich geb auf :) -- |
|
Profil || Suche |
|
018 15.02.2002, 16:58 anothergb02 |
Tron: Apfelkorn warum denn das ? Vector veloadd; veloadd = Normalize(impcenter - origin); // richtungsvector // impcenter ist das Zentrum des Impulses wenn das mit dem richtungsvector nicht hinhaut kannst du das ja immernoch per angles machen ....naja das dürfte aber auch so klappen Being in john Malkovich |
|
Profil || Suche |
|
019 15.02.2002, 17:23 anothergb02 |
Der Text ist zu kurz -> tja das passiert, wenn man seine NAchrichten nicht löschen kann --Being in john Malkovich Dieser Beitrag wurde am 15.02.2002 um 17:35 von anothergb02 bearbeitet. |
|
Profil || Suche |
|
020 15.02.2002, 22:09 Tron |
was ist daran besser es nicht als klasse zu machen (mal abgesehen davon dass in c++ structs auch klassen sind) welche verwaltung dauert laenger? das ist ein uebles geruecht ueber oo und kommt von solchen leuten die alle methoden virtuell machen. ich kann dir gerne mal einige assemblerlistings meiner vektorklasse zeigen, ich glaube kaum, dass du das mit normalen c besser hinbekommst. (ich vermute eher es kommt genau das selbe dabei raus) --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |

