2D- und 3D-Vektoren
Übersicht

timmeTheOnlyBetreff: 2D- und 3D-Vektoren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe meine Vektorklassen aus dem Codearchiv nun zu zwei Modulen zusammengerafft und ein Bisschen erweitert.
Die Funktionen und Methoden sind mit "bbdoc: "-Tags ausgestattet und ermöglichen somit - hoffentlich - ein schnelles einarbeiten. Kleiner Changelog: 28.08.12 Code: [AUSKLAPPEN] - Added: Normalized 16.08.12 Code: [AUSKLAPPEN] Vector2 & Vector3: - Changed: Absolute -> Magnitude - Added: Normalize Vector3: - Changed: Absolute -> Magnitude - Added: Normalize - Fixed: Add, Subtract, Multiply, Divide ??.??.?? Code: [AUSKLAPPEN] Vector2 & Vector3: - Changed: Add -> Addition, Subtract -> Subtraction, Multiply -> Multiplication, Divide -> Division - Added: Methods Add, Subtract, Multiply, Divide, Invert - Added: Simple vectors (VectorLeft/-Right/-Up/-Down) as variables Vector3: - Added: Simple vectors (VectorIn/-Out) as variables - Added: Variables OffXfZ & OffYfZ -> Manipulate the drawing of the z-axis Die Module (mit Code) gibt es hier Code: [AUSKLAPPEN] Installation: Einfach den Ordner 'satyrias.mod' in das Verzeichnis '.../BlitzMax/mod/' entpacken |
||
- Zuletzt bearbeitet von timmeTheOnly am Di, Aug 28, 2012 21:02, insgesamt 6-mal bearbeitet
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Heyho ![]() Da ich grade ein paar Vektorberechnungen brauche, um "schneller" vorran zu kommen, hab ich mir dein Modul geklaubt. hihi ![]() Ganz vorweg: ich brauchte ein "Vector3.normalize" - also: BlitzMax: [AUSKLAPPEN]
Dies gibt mir aber einen falschen Z wert. Ein blick in das modul ergab: BlitzMax: [AUSKLAPPEN] Method Divide(s:Float) Vector3.Division beachtet zwar die Z division, allerdings wird in keiner der methoden (add, subtract, divide, multiply) Self.z von tmp übernommen. Ich werde es nun für mich fixen, aber da ich immernochnicht ganz auf dem höchsten stand bin, was vektoren angeht, solltest du das modul besser noch einmal überarbeiten ![]() |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey PhillipK,
danke für dein Feedback. War schon etwas später, als ich das Zeug fertig gemacht hab. Der Fehler mit der z-Koordinate kam daher, dass ich die Methoden von Vector2 nach Vector3 übernommen und die dritte Koordinate außer Acht gelassen habe. Schön blöd ![]() Desweiteren hatte ich Kopf, dass es eine Methode gibt, die den Vektor normalisiert. Das war nicht der Fall, darum habe ich sie nachgerüstet. Sie hört auf den Namen "Normalize()" Bei der Gelegenheit ist mir aufgefallen, dass "Absolute" nicht der Ausdruck für den Betrag eines Vektors ist, sondern "Magnitude". Auch das habe ich angepasst Gruß, Tim |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist kein ding ![]() Mich wunderts allerdings, das dies noch niemanden früher aufgefallen ist oO Naja wahrscheinlich haben die meisten hier mehr ahnung von vektoren als ich :> Ja, das absolut hat mich auch verwirrt. Beim privaten lernen von vektoren kam mir immer der begriff "length" bzw "länge" unter, oder eben Magnitude. Ansonsten großes lob ![]() Also danke einmal ![]() |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie gesagt, das ganze beruht auf meinen 11. Klass Kenntnissen. Es gibt sicher noch einige Dinge, die ich nicht über Vektoren weiß, allerdings ist die analytische Geometrie keine Hexerei. Das Ganze hat mir schon des öfteren geholfen.
Für OpenGL Coding ist das ganze recht praktisch. Man kann die Klasse "missbrauchen" um Vertices, Faces oder Farben zu verwalten. Das hat zwar dann nichts mehr mit Vektoren zu tun, ist aber trotzdem noch praktisch. Außerdem lässt sich mit dem Kreuzprodukt ganz leicht die Normale einer Dreiecksfläche berechnen. Ganz praktisch, wenn es dann um Beleuchtung geht. |
||
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
wollte dir sagen, dass dein Modul recht praktisch sein kann, wenn man nix überladenes in sein Programm importen will. Klein und schlank. Kleine Frage: Die Methode 'Normalize' liefert laut BB-Doc einen normierten Vektor. Wenn ich mir die Methode angucke, sehe ich aber, dass dort der Ursprungsvektor lediglich verändert wird und kein neues Objekt zurückgeliefert wird. Was von beidem wolltest du nun? ![]() |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo juse4pro,
danke für das Lob und auch für die Anregung. Die Methode 'Normalize' normalisiert nun den Vektor, wohingegen die Methode 'Normalized' den normalisierten Vektor als neues Objekt zurückgibt. Download wieder im ersten Link. Gruß, Tim |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group