summaryrefslogtreecommitdiff
path: root/vector.mod
diff options
context:
space:
mode:
Diffstat (limited to 'vector.mod')
-rw-r--r--vector.mod/doc/commands.html56
-rw-r--r--vector.mod/vector.bmx98
2 files changed, 119 insertions, 35 deletions
diff --git a/vector.mod/doc/commands.html b/vector.mod/doc/commands.html
new file mode 100644
index 0000000..4cb9c08
--- /dev/null
+++ b/vector.mod/doc/commands.html
@@ -0,0 +1,56 @@
+<html>
+<head>
+<title>BlitzMax Module Reference</title>
+<link rel="stylesheet" type="text/css" href="../../../../doc/bmxstyle.css">
+</head>
+<body>
+<h1>Type Reference</h1>
+<p><div id=TVector class=ref>
+<div class=rootdoc><font class=token>Type TVector</font> Implements a 3D vector. Can be used as a 2D vector by ignoring Z.</div><div class=indent></div><br><p><div id=x>
+<div class=rootdoc><font class=token>Field x:Float</font> The X component of the vector.</div><div class=indent></div><br></div><br>
+<p><div id=y>
+<div class=rootdoc><font class=token>Field y:Float</font> The Y component of the vector.</div><div class=indent></div><br></div><br>
+<p><div id=z>
+<div class=rootdoc><font class=token>Field z:Float</font> The Z component of the vector.</div><div class=indent></div><br></div><br>
+<p><div id=IsNull>
+<div class=rootdoc><font class=token>Method IsNull:Int()</font> Is the vector null.</div><div class=indent><p><b>Returns:</b> True if the vector is null (all components zero), False otherwise.</div><br></div><br>
+<p><div id=Length>
+<div class=rootdoc><font class=token>Method Length:Float()</font> The length of the vector.</div><div class=indent><p><b>Returns:</b> The length of the vector.</div><br></div><br>
+<p><div id=Normalise>
+<div class=rootdoc><font class=token>Method Normalise()</font> Normalise the vector so its length is 1.</div><div class=indent></div><br></div><br>
+<p><div id=SetLength>
+<div class=rootdoc><font class=token>Method SetLength( sc:Float )</font> Set the vector so its length is <b>sc</b>.</div><div class=indent></div><br></div><br>
+<p><div id=AddScalar>
+<div class=rootdoc><font class=token>Method AddScalar( sc:Float )</font> Adds <b>sc</b> to all components.</div><div class=indent></div><br></div><br>
+<p><div id=Minus>
+<div class=rootdoc><font class=token>Method Minus()</font> Reverse the direction of the vector.</div><div class=indent></div><br></div><br>
+<p><div id=Scale>
+<div class=rootdoc><font class=token>Method Scale( sc:Float )</font> Scale all components by <b>sc</b>.</div><div class=indent></div><br></div><br>
+<p><div id=Add>
+<div class=rootdoc><font class=token>Method Add( v:TVector )</font> Add another vector to this vector.</div><div class=indent></div><br></div><br>
+<p><div id=Subtract>
+<div class=rootdoc><font class=token>Method Subtract( v:TVector )</font> Subtract another vector from this vector.</div><div class=indent></div><br></div><br>
+<p><div id=ScaleVector>
+<div class=rootdoc><font class=token>Method ScaleVector( v:TVector )</font> Scale this vector by another vector.</div><div class=indent></div><br></div><br>
+<p><div id=InverseScaleVector>
+<div class=rootdoc><font class=token>Method InverseScaleVector( v:TVector )</font> Inverse scale this vector by another vector.</div><div class=indent></div><br></div><br>
+<p><div id=Cross>
+<div class=rootdoc><font class=token>Method Cross:TVector( v:TVector )</font> Calculate the cross product of this vector with another.</div><div class=indent><p><b>Returns:</b> A new <b>TVector</b> holding the cross product.</div><br></div><br>
+<p><div id=Dot>
+<div class=rootdoc><font class=token>Method Dot:Float( v:TVector )</font> Calculate the dot product of this vector with another.</div><div class=indent><p><b>Returns:</b> The dot product.</div><br></div><br>
+<p><div id=Create>
+<div class=rootdoc><font class=token>Function Create:TVector( dx:Float=0.0, dy:Float=0.0, dz:Float=0.0 )</font> Create a vector.</div><div class=indent><p><b>Returns:</b> The created vector.<p><b>dx</b>, <b>dy</b> and <b>dz</b> are the initial component values.</div><br></div><br>
+</div><br>
+<h1>Module Information</h1>
+<table>
+<tr><td><b>Framework</b></td>
+<td> Simple Vector class</td></tr>
+<tr><td><b>Copyright</b></td>
+<td> Public Domain</td></tr>
+<tr><td><b>Author</b></td>
+<td> Ian Cowburn</td></tr>
+<tr><td><b>Version</b></td>
+<td> $Revision$</td></tr>
+</table>
+</body>
+</html>
diff --git a/vector.mod/vector.bmx b/vector.mod/vector.bmx
index f32035b..67818fe 100644
--- a/vector.mod/vector.bmx
+++ b/vector.mod/vector.bmx
@@ -1,3 +1,6 @@
+Rem
+bbdoc: noddybox.vector
+EndRem
Module noddybox.vector
ModuleInfo "Framework: Simple Vector class"
@@ -10,21 +13,30 @@ ModuleInfo "Version: $Revision$"
Strict
Import brl.math
+Rem
+bbdoc: Implements a 3D vector. Can be used as a 2D vector by ignoring Z.
+EndRem
Type TVector
+ Rem
+ bbdoc: The X component of the vector.
+ EndRem
Field x:Float
+ Rem
+ bbdoc: The Y component of the vector.
+ EndRem
Field y:Float
+ Rem
+ bbdoc: The Z component of the vector.
+ EndRem
Field z:Float
- ' Creates a new vector
- '
- ' dx - X componenent
- ' dy - Y componenent
- ' dz - Z componenent
- '
- ' Returns null for invalid parameters.
- '
+ Rem
+ bbdoc: Create a vector.
+ returns: The created vector.
+ about: @dx, @dy and @dz are the initial component values.
+ EndRem
Function Create:TVector(dx:Float=0.0, dy:Float=0.0, dz:Float=0.0)
Local o:TVector
@@ -37,14 +49,18 @@ Type TVector
Return o
End Function
- ' Is this vector null
- '
+ Rem
+ bbdoc: Is the vector null.
+ returns: True if the vector is null (all components zero), False otherwise.
+ EndRem
Method IsNull:Int()
Return x=0 And y=0 And z=0
End Method
- ' Get the length of the vector
- '
+ Rem
+ bbdoc: The length of the vector.
+ returns: The length of the vector.
+ EndRem
Method Length:Float()
If (IsNull())
Return 0
@@ -53,8 +69,9 @@ Type TVector
EndIf
End Method
- ' Normalise the vector
- '
+ Rem
+ bbdoc: Normalise the vector so its length is 1.
+ EndRem
Method Normalise()
Local l:Float=Length()
If (l<>0)
@@ -64,78 +81,89 @@ Type TVector
EndIf
End Method
- ' Set the vector to a length
- '
+ Rem
+ bbdoc: Set the vector so its length is @sc.
+ EndRem
Method SetLength(sc:Float)
Normalise()
Scale(sc)
End Method
- ' Add a scalar to the vector
- '
+ Rem
+ bbdoc: Adds @sc to all components.
+ EndRem
Method AddScalar(sc:Float)
x:+sc
y:+sc
z:+sc
End Method
- ' Flip the vector
- '
+ Rem
+ bbdoc: Reverse the direction of the vector.
+ EndRem
Method Minus()
x=-x
y=-y
z=-z
End Method
- ' Scale the vector by a scalar
- '
+ Rem
+ bbdoc: Scale all components by @sc.
+ EndRem
Method Scale(sc:Float)
x:*sc
y:*sc
z:*sc
End Method
- ' Add another vector to this
- '
+ Rem
+ bbdoc: Add another vector to this vector.
+ EndRem
Method Add(v:TVector)
x:+v.x
y:+v.y
z:+v.z
End Method
- ' Subtract another vector from this
- '
+ Rem
+ bbdoc: Subtract another vector from this vector.
+ EndRem
Method Subtract(v:TVector)
x:-v.x
y:-v.y
z:-v.z
End Method
- ' Scale this with another vector
- '
+ Rem
+ bbdoc: Scale this vector by another vector.
+ EndRem
Method ScaleVector(v:TVector)
x:*v.x
y:*v.y
z:*v.z
End Method
- ' Inverse scale this with another vector
- '
+ Rem
+ bbdoc: Inverse scale this vector by another vector.
+ EndRem
Method InverseScaleVector(v:TVector)
x:/v.x
y:/v.y
z:/v.z
End Method
- ' Calculate the cross product of this vector with another.
- ' Returns a new vector.
- '
+ Rem
+ bbdoc: Calculate the cross product of this vector with another.
+ returns: A new @TVector holding the cross product.
+ EndRem
Method Cross:TVector(v:TVector)
Return TVector.Create(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y)
End Method
- ' Calculate the dot product of this vector with another.
- '
+ Rem
+ bbdoc: Calculate the dot product of this vector with another.
+ returns: The dot product.
+ EndRem
Method Dot:Float(v:TVector)
Return x*v.x + y*v.y + z*v.z
End Method