2D- und 3D-Vektoren
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
timmeTheOnlyBetreff: 2D- und 3D-Vektoren |
Do, Jun 21, 2012 21:22 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 |
Do, Aug 16, 2012 13:41 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 Ich werde mich hüten, hier fixes zu posten, da ich nicht weiß ob ich richtig liege. |
||
timmeTheOnly |
Do, Aug 16, 2012 14:12 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 |
Do, Aug 16, 2012 14:18 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 Ich arbeite seit geraumer zeit schon nurnoch mit vektoren, da es einfach einfacher ist. Schon alleine die fähigkeit, 2 bis 3 werte zu "bündeln" :> Aber selbst ein modul darüber anzulegen habe ich mich nicht getraut (gefährliches halbwissen, oh-ho!) Also danke einmal |
||
timmeTheOnly |
Do, Aug 16, 2012 14:39 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 |
Di, Aug 28, 2012 17:49 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? (im Vector2-Modul) |
||
timmeTheOnly |
Di, Aug 28, 2012 20:58 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 BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group