TriangleByRef class

From Solid Graphics Wiki

Jump to: navigation, search
TriangleByRef class
Namespace: SKL3D
Base type: (None)
Include: Skl3D.h
Lib (Release): SKL.lib
Lib (Debug): SKL_D.lib

The TriangleByRef class specifies a triangle using three integer values. The values specify indexes into a point array which contain actual triangle points coordinates. Therefore using this type is always accompanied by using some kind of point array type, usually the PointList class or the PointdList class.


Default class constructor does not initialize the triangle point indexes to any value. This is on purpose for performance reasons. Other class costructors allow to initialize the an object using three integer values.


Field name Type Description
point0 int index of the first triangle point
point1 int index of the second triangle point
point2 int index of the third triangle point
point int[ 3 ] array of three integer values. Note: the point0, point1, point2 fields and the point array are actually defined as union, so for example the code triangle.point[ 1 ] = 23 also changes the triangle.point1 value to 23


Method name Description
Area Calculates the triangle area.
Center Calculates the triangle center point
NormalVector Calculates triangle's normal vector
IsSharingPoint Determines whether the triangle is sharing a point with anothr triangle
FindPointIndex Returns index (0, 1 or 2 ) into it's point field for given point id (point index). If the point id is not used by the triangle then it returns -1.
FindEdge Returns index of specified edge, or -1 if edge does is not a part of the triangle. Orientation of the specified edge is ignored during the search.
FindOrientedEdge Returns index of specified edge, or -1 if edge does is not a part of the triangle. Orientation of the specified edge is NOT ignored during the search.
FindCommonPointIndex Returns index (0, 1, or 2) of a point which is common to the triangle and another specified triangle, or -1 if the two triangles don't have a common point.
FindNonCommonPointIndex Returns index (0, 1, or 2) of first non-common point index of two triangles, or -1 if both triangles use the same points.
AddOffset Increments all the point field indexes by given offset.
Reorient Reverses the triangle's orientation.
IsSmall Returns true if any of the two triangle points are closer to each other than the cMinDistance 'constant'. Otherwise it returns false.
IsValid Returns true if the triangle definition is invalid - if any two of it's point indexes reference the same point in the point array. Otherwise it returns false.
LoadFromXML Loads the triangle definition from XmlReader.
SaveToXML Saves triangle definition into MemoryBuffer as XML.


= Allows assignment of one triangle to another.
== Returns true if two triangles have all points common. Otherwise returns false. The function ignores triangles orientation.


The Point class does not have any virtual functions on purpose, so it is safe (in MS Visual C++) to typecast pointer to the class object to int pointer and access the point0, point1, point2 point indexes by float array indexes 0, 1 and 2.

Also it is safe to use functions such as memcpy to copy values of one TriangleByRef object to other, or values of C-array of TriangleByRef objects to another C-Array of TriangleByRef objects (as long as the destination array has enough capacity).

See Also


SolidKit Library Documentation

Personal tools