Rechnen mit Vektoren

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

ComNik

Betreff: Rechnen mit Vektoren

BeitragMi, Jul 29, 2009 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieder mal guten morgen Very Happy
Nachdem ich das tutorial von Noobody eingehend konsultiert, sowie ihn mit vielen fragen genervt hatte( Rolling Eyes )
begann ich meine eigene Physik Engine für BMax Spiele zu schreiben. Die ist inzwischen so gut wie fertig. Um mit so wenige Includes wie möglichen herumzumachen, entschied ich mich gestern die benötigte Mathematik(die ich keineswegs 100%tig verstehe) in einem modul zusammenzufassen. Mit freundlicher Erlaubnis Noobodys veröffentliche ich es hier nun, damit man sich das schreiben eigener funktionen in einer include sparen kann

Wie gesagt: Die funktionen habe ich mir nicht alle rausgesucht, die meisten sind von Noobody!

Arrow Wie nutze ich das Modul jetz?
Die Funktionen in dem Modul arbeiten alle mit der TVector Klasse. Diese besteht aus den Fields x, y und z(nur für 3D etc...) sowie den mathematischen methoden. Möchte man nun (so wie ich in meiner engine) einen eigenen Type mit neuen Fields etc... nutzen lässt man im neuen Type die Fields x, y und optional z weg. Dann einfch den eigenen Type von der TVector Klasse erben lassen. - und schon hat man seine eigene Vektor klasse mit der man machen kann was man will.

Beispiel:
So sieht die TVector Klasse aus:
Code: [AUSKLAPPEN]

        Type TVector
            Field x:Float
            Field y:Float
            Field z:Float

            'Rechen funktionen etc...
         End Type
     


Und so könnte eure eigene Klasse dann aussehen:
Code: [AUSKLAPPEN]

       Type TVertex Extends TVector '<-- erben nich vergessen
           'x, y und z weglassen!
           Field bli:Int
           Field bla:String
           Field blubb:Float
        End Type
   


Download: *Klick!

Funktionsübersicht:
Vector(x, y, z) : Erstellt einen neuen Vektor und liefert ihn zurück.
Methoden:
vector.Add(vector:TVector) : Addiert den übergegebenen vektor zu Self.
vector.Subtract(vector:TVector) : Subtrahiert den übergegebenen Vektor von Self.
vector.Multiply(S:Float) : Multipliziert Self.x, Self.y und Self.z mit S
vector.Invert() : Invertiert einen Vektor. (Self.x = 1/self.x, Self.y = 1/Self.y, Self.z = 1/Self.z)
vector.Angle() : Liefert den Winkel des Vektors zurück.
vector.Normalize() : Normalisiert einen Vektor.
vector.Dotproduct(vector:TVector) : Liefert das Skalar Produkt von Self und vector zurück.
vector.CrossProduct(vector:TVector) : Liefert das vektorprodukt von Self und vector zurück.
vector.Copy() : Kopiert Self und liefert die Kopie zurück.

Verbesserungsvorschläge Bugmeldungen etc... einfach posten!
Solltet ihr das Bedürfniss haben: Lob is hier fehl am Platz, und wenn dann bitte an Noo!

mfg
ComNik
WIP: Vorx.Engine

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group