DreiDe - 3D Engine

BlitzMax Forums/BlitzMax Programming/DreiDe - 3D Engine

Hi,

In the Surface.bmx, I try to calculate the Normal of the Triangle. I code my own Vector3D type. But I always have an error at this line. I'd like to know where is the error?

Vertex1.Vector[0] = Self.GetVertexX( GetTriangleVertex( Triangle, 0))


MY FUNCTION

Method GetTriangleNormal:Vector3D(Triangle:Int)
If (Triangle < 0) Or (Triangle => Self.TriangleCount) Then
TDreiDeError.DisplayError("Triangle does not exist!")
Else

Local Normal:Vector3D, Vertex1 : Vector3D, Vertex2 : Vector3D, Vertex3 : Vector3D
Local Edge1 : Vector3D, Edge2 : Vector3D

' Calculate FaceNormal

' Get VertexPositions
Vertex1.Vector[0] = Self.GetVertexX( GetTriangleVertex( Triangle, 0))
Vertex1.Vector[1] = Self.GetVertexY( GetTriangleVertex( Triangle, 0))
Vertex1.Vector[2] = Self.GetVertexZ( GetTriangleVertex( Triangle, 0))

Vertex2.Vector[0] = Self.GetVertexX( GetTriangleVertex( Triangle, 1))
Vertex2.Vector[1] = Self.GetVertexY( GetTriangleVertex( Triangle, 1))
Vertex2.Vector[2] = Self.GetVertexZ( GetTriangleVertex( Triangle, 1))

Vertex3.Vector[0] = Self.GetVertexX( GetTriangleVertex( Triangle, 2))
Vertex3.Vector[1] = Self.GetVertexY( GetTriangleVertex( Triangle, 2))
Vertex3.Vector[2] = Self.GetVertexZ( GetTriangleVertex( Triangle, 2))

' Get EdgeVectors between Vertex1-Vertex0 and Vertex2-Vertex0
Edge1 = Vertex2.Substraction( Vertex1)
Edge2 = Vertex3.Substraction( Vertex2)

' Calculate the Normal by using the CrossProduct
Normal = Edge1.CrossProduct(Edge2)

'Normalize vector
Normal = Normal.Normalized()

Return Normal
EndIf
End Method