XIncludeFile "GlobalDefinitions.pb" EnableExplicit ;****************** ;- Triangle module ;****************** Structure Triangle a.Vector3 b.Vector3 c.Vector3 EndStructure Procedure setTriangle(*triangle.Triangle, *a.vector3, *b.vector3, *c.vector3) copyVector3(*triangle\a, *a) copyVector3(*triangle\b, *b) copyVector3(*triangle\c, *c) EndProcedure Procedure copyTriangle(*triangle.Triangle, *triangleFrom.Triangle) copyVector3(*triangle\a, *triangleFrom\a) copyVector3(*triangle\b, *triangleFrom\b) copyVector3(*triangle\c, *triangleFrom\c) EndProcedure Procedure calculateCentroid(*result.Vector3, *triangle.Triangle) copyVector3(*result, *triangle\a) addVector3(*result, *triangle\b) addVector3(*result, *triangle\c) divVector3Scalar(*result, 3) EndProcedure Procedure.s toStringTriangle(*triangle.Triangle, offset.i = 0) ProcedureReturn Space(offset) + "Triangle (" + *triangle + ")" + #NEWLINE$ + Space(offset + #DEBUGOFFSET) + " A : " + toStringVector3(*triangle\a, offset + #DEBUGOFFSET) + Space(offset + #DEBUGOFFSET) + " B : " + toStringVector3(*triangle\b, offset + #DEBUGOFFSET) + Space(offset + #DEBUGOFFSET) + " C : " + toStringVector3(*triangle\c, offset + #DEBUGOFFSET) EndProcedure Procedure.f calculateOrientation(*triangle.Triangle) Define edge1.Vector3 copyVector3(@edge1, *triangle\c) subVector3(@edge1, *triangle\a) Define edge2.Vector3 copyVector3(@edge2, *triangle\b) subVector3(@edge2, *triangle\a) Define normal.Vector3: crossVector3(@normal, @edge1, @edge2) ProcedureReturn dotVector3(*triangle\a, @normal) EndProcedure ; IDE Options = PureBasic 5.11 (Windows - x64) ; CursorPosition = 1 ; Folding = - ; EnableAsm ; EnableUnicode ; EnableThread ; EnableXP ; CPU = 1