# IPolygon Struct Reference
[External Interfaces]

Inheritance diagram for IPolygon:

List of all members.

## Public Member Functions
virtual int32 MCCOMAPI | GetNbVertices () const =0
virtual I3DExVertex *MCCOMAPI | GetVertex (int32 indexInPolygon)=0
virtual IEdge *MCCOMAPI | GetEdge (int32 indexInPolygon)=0
virtual void MCCOMAPI | Delete ()=0
virtual IFacet *MCCOMAPI | GetFacet (int32 indexInPolygon)=0
virtual int32 MCCOMAPI | FacetCount ()=0
virtual void MCCOMAPI | GetBoundingBox (TBBox3D &bbox)=0
virtual void MCCOMAPI | SetSelection (boolean selected, boolean autoSelection=true)=0
virtual boolean MCCOMAPI | GetSelection (boolean useSymmetry=false)=0
virtual boolean MCCOMAPI | GetBestPlane (TVector3 &ii, TVector3 &jj, TVector3 &kk, TVector3 &center)=0
virtual void MCCOMAPI | GetPolymesh (IPolymesh **iPolymesh)=0
virtual void MCCOMAPI | Triangulate ()=0
virtual void MCCOMAPI | SetBooleanClassification (const int32 classification)=0
virtual const int32 MCCOMAPI | GetBooleanClassification ()=0
virtual void MCCOMAPI | GetNormal (TVector3 &normal, boolean smoothed=true)=0
virtual void MCCOMAPI | GetVertexNormal (TVector3 &normal, int32 vertexIndex)=0
virtual void MCCOMAPI | GetCenter (TVector3 &center)=0
virtual IPolygon *MCCOMAPI | Subdivide (I3DExVertex *v1, I3DExVertex *v2)=0
virtual void MCCOMAPI | Subdivide (ETesselateMode mode)=0
virtual IEdge *MCCOMAPI | GetOtherEdge (I3DExVertex *vertex, IEdge *edge)=0
virtual IPolygon *MCCOMAPI | CloneConjugate ()=0
virtual boolean MCCOMAPI | GetBestPlane2 (TVector3 &ii, TVector3 &jj, TVector3 &kk, TVector3 &center)=0
virtual void MCCOMAPI | ClassifyPolygon (IPolymesh *object)=0
virtual void MCCOMAPI | GetName (char *name)=0
virtual void MCCOMAPI | SetName (char *name)=0
virtual void MCCOMAPI | GetFacetInfo (int32 index, int32 *info)=0
virtual uint32 MCCOMAPI | GetSmoothingID ()=0
virtual int16 MCCOMAPI | GetShadingDomainID ()=0
virtual void MCCOMAPI | SetShadingDomainID (int16 id)=0
virtual int32 MCCOMAPI | GetUVIndexForVertex (int32 vertexIndexInPolygon)=0
virtual int32 MCCOMAPI | GetUVIndexForVertex (I3DExVertex *vertex)=0
virtual void MCCOMAPI | SetUVIndexForVertex (int32 vertexIndex, int32 uvIndex)=0
virtual void MCCOMAPI | SetUVIndexForVertex (I3DExVertex *vertex, int32 uvIndex)=0
virtual void MCCOMAPI | SetMarker (int32 marker)=0
virtual int32 MCCOMAPI | GetMarker ()=0
virtual int32 MCCOMAPI | GetVertexIndex (const I3DExVertex *vertex)=0
virtual void MCCOMAPI | Hide (boolean hide)=0
virtual boolean MCCOMAPI | Hidden ()=0
virtual IPolygon *MCCOMAPI | GetSymmetricalPolygon ()=0
| Gets the symmetrical polygon if any in the mesh and if the symmetrical modeling is enabled.
int32 | GetNbEdges ()

## Detailed Description

A Polygon is the basic 3D primitive that make up a Polymesh. The have at least 3 vertices, but can have more. Polygons with more than three vertices will be tessellated into triangular facets for display. Polygons as viewed in the plane from above the normal have vertices numbered clockwise.

See also:
  { IEdge IPolymesh }

## Member Function Documentation

virtual void MCCOMAPI IPolygon::ClassifyPolygon | ( | IPolymesh * | object | ) | `[pure virtual]`

This function Classifies the Polygon with respect to the Polymesh passed in the parameter. Used internally for Boolean operations. Do not use elsewhere.

Parameters:

  | object | A pointer to the Polymesh with which to classify this Polygon.

virtual IPolygon* MCCOMAPI IPolygon::CloneConjugate | ( |  | ) | `[pure virtual]`

Accessor to this Polygon's clone conjugate. Vertex Modeler specific, generally should not be used elsewhere.

Returns:
  A pointer to the Clone Conjugate of this Polygon

virtual void MCCOMAPI IPolygon::Delete | ( |  | ) | `[pure virtual]`

Removes this Polygon from its Polymesh and deletes it.

virtual int32 MCCOMAPI IPolygon::FacetCount | ( |  | ) | `[pure virtual]`

Returns number of facets in the polygon.

Returns:
  Number of facets in the polygon.

virtual boolean MCCOMAPI IPolygon::GetBestPlane | ( | TVector3 & | ii,
|  | TVector3 & | jj,
|  | TVector3 & | kk,
|  | TVector3 & | center |
| ) |  |  | `[pure virtual]`

This function calculates ii, jj, and kk - an orthogonal basis for a plane approximation of the Polygon. Also computes a centroid for the vertices of the Polygon. This version of the function verifies that kk is pointing the same direction as the Polygon's normal, and flips the resulting plane if necessary.

Parameters:

  | ii | Returns a basis vector
  | jj | Returns a basis vector
  | kk | Returns a basis vector
  | center | Returns the centroid

Returns:
  True if the operation succeeded and the output parameters contain correct results.

virtual boolean MCCOMAPI IPolygon::GetBestPlane2 | ( | TVector3 & | ii,
|  | TVector3 & | jj,
|  | TVector3 & | kk,
|  | TVector3 & | center |
| ) |  |  | `[pure virtual]`

This function calculates ii, jj, and kk - an orthogonal basis for a plane approximation of the Polygon. Also computes a centroid for the vertices of the Polygon.

Parameters:

  | ii | Returns a basis vector
  | jj | Returns a basis vector
  | kk | Returns a basis vector
  | center | Returns the centroid

Returns:
  True if the operation succeeded and the output parameters contain correct results.

virtual const int32 MCCOMAPI IPolygon::GetBooleanClassification | ( |  | ) | `[pure virtual]`

The Boolean Classification field is an auxilliary field used to store an extra number associated with the Polygon. Do not rely on its being initialized, but you can initialize it and then use it. GetBooleanClassification gets the field for this Polygon.

Returns:
  The value stored in this Polygon's Boolean Classification field

virtual void MCCOMAPI IPolygon::GetBoundingBox | ( | TBBox3D & | bbox | ) | `[pure virtual]`

Calculates the 3D bounding box of the Polygon

Parameters:

  | bbox | Returns the bounding box

virtual void MCCOMAPI IPolygon::GetCenter | ( | TVector3 & | center | ) | `[pure virtual]`

Returns the barycenter of the Polygon

Parameters:

  | center | Returns the barycenter of the Polygon

virtual IEdge* MCCOMAPI IPolygon::GetEdge | ( | int32 | indexInPolygon | ) | `[pure virtual]`

Returns the indexed edge of the polygon

Parameters:

  | indexInPolygon | The index of the edge to get

Returns:
  A pointer to the Edge indexed, or NULL if the index is out of range

virtual IFacet* MCCOMAPI IPolygon::GetFacet | ( | int32 | indexInPolygon | ) | `[pure virtual]`

Returns the indexed facet in the polygon

Parameters:

  | indexInPolygon | The index of the Facet to get

Returns:
  A pointer to the Facet indexed, or NULL if the index is out of range

virtual void MCCOMAPI IPolygon::GetFacetInfo | ( | int32 | index,
|  | int32 * | info |
| ) |  |  | `[pure virtual]`

When passed an index to a facet in the Polygon, fills the array at info with the indices of the vertices in that facet.

Parameters:

  | index | Index of the facet in question
  | info | pointer to int32[3] to hold vertex indices

virtual int32 MCCOMAPI IPolygon::GetMarker | ( |  | ) | `[pure virtual]`

Gets the polygon's marker Can be used to remember where the poly is coming from when importing an object

virtual void MCCOMAPI IPolygon::GetName | ( | char * | name | ) | `[pure virtual]`

Gets a pointer to a C string name for the Polygon. Do not use.

Parameters:

  | name | Returns a pointer to a string containing a name for this Polygon

int32 IPolygon::GetNbEdges | ( |  | ) | `[inline]`

virtual int32 MCCOMAPI IPolygon::GetNbVertices | ( |  | ) | const`[pure virtual]`

Returns:
  The number of vertices in the polygon (which will equal the number of edges).

virtual void MCCOMAPI IPolygon::GetNormal | ( | TVector3 & | normal,
|  | boolean | smoothed = `true` |
| ) |  |  | `[pure virtual]`

Returns the normal to the Polygon.

Parameters:

  | normal | Returns the normalized vector normal to the Polygon
  | smoothed | If true, smoothing of the edges will affect the normal computation

virtual IEdge* MCCOMAPI IPolygon::GetOtherEdge | ( | I3DExVertex * | vertex,
|  | IEdge * | edge |
| ) |  |  | `[pure virtual]`

Given an edge and a vertex attached to the edge, will return the other edge attached to that vertex.

Parameters:

  | vertex | A pointer to a Vertex in the Polygon
  | edge | A pointer to an Edge in the Polygon that contains vertex

Returns:
  A pointer to the other Edge attached to vertex

virtual void MCCOMAPI IPolygon::GetPolymesh | ( | IPolymesh ** | iPolymesh | ) | `[pure virtual]`

Gets the Polymesh to which this Polygon belongs

Parameters:

  | iPolymesh | Returns the Polymesh

virtual boolean MCCOMAPI IPolygon::GetSelection | ( | boolean | useSymmetry = `false` | ) | `[pure virtual]`

Returns:
  True if the Polygon is selected

virtual int16 MCCOMAPI IPolygon::GetShadingDomainID | ( |  | ) | `[pure virtual]`

Returns:
  The shading domain ID for this Polygon

virtual uint32 MCCOMAPI IPolygon::GetSmoothingID | ( |  | ) | `[pure virtual]`

Returns:
  The smoothing ID for this Polygon

virtual IPolygon* MCCOMAPI IPolygon::GetSymmetricalPolygon | ( |  | ) | `[pure virtual]`

Gets the symmetrical polygon if any in the mesh and if the symmetrical modeling is enabled.

virtual int32 MCCOMAPI IPolygon::GetUVIndexForVertex | ( | I3DExVertex * | vertex | ) | `[pure virtual]`

Accessor for the index of the UV in the UV List of the vertex to use with the Vertex in this Polygon. Note that this version is slower than the one passed an index to the Vertex in the Polygon.

Parameters:

  | vertex | Pointer to a Vertex in the Polygon

Returns:
  The UV index to use, or -1 if not found.

virtual int32 MCCOMAPI IPolygon::GetUVIndexForVertex | ( | int32 | vertexIndexInPolygon | ) | `[pure virtual]`

Accessor for the index of the UV in the UV List of the vertex to use with the Vertex in this Polygon.

Parameters:

  | vertexIndexInPolygon | Index of the vertex in the Polygon

Returns:
  The UV index to use, or -1 if not found.

virtual I3DExVertex* MCCOMAPI IPolygon::GetVertex | ( | int32 | indexInPolygon | ) | `[pure virtual]`

Returns the indexed vertex of the polygon

Parameters:

  | indexInPolygon | The index of the vertex to get

Returns:
  A pointer to the vertex indexed, or NULL if the index is out of range

virtual int32 MCCOMAPI IPolygon::GetVertexIndex | ( | const I3DExVertex * | vertex | ) | `[pure virtual]`

Returns the index of the vertex in the polygon Returns kUnusedIndex if the vertex isn't used by the polygon.

virtual void MCCOMAPI IPolygon::GetVertexNormal | ( | TVector3 & | normal,
|  | int32 | vertexIndex |
| ) |  |  | `[pure virtual]`

Returns the normal for the indexed vertex in this Polygon

Parameters:

  | normal | Returns the normal vector for the vertex
  | vertexIndex | Index to the vertex

virtual boolean MCCOMAPI IPolygon::Hidden | ( |  | ) | `[pure virtual]`

virtual void MCCOMAPI IPolygon::Hide | ( | boolean | hide | ) | `[pure virtual]`

virtual void MCCOMAPI IPolygon::SetBooleanClassification | ( | const int32 | classification | ) | `[pure virtual]`

The Boolean Classification field is an auxilliary field used to store an extra number associated with the Polygon. Do not rely on its being initialized, but you can initialize it and then use it. SetBooleanClassification sets the field for this Polygon.

Parameters:

  | classification | Value to store in the Boolean Classification

virtual void MCCOMAPI IPolygon::SetMarker | ( | int32 | marker | ) | `[pure virtual]`

Sets the polygon's marker (or index) Can be used to remember where the poly is coming from when importing an object

virtual void MCCOMAPI IPolygon::SetName | ( | char * | name | ) | `[pure virtual]`

Sets the name of the Polygon from a C string. Do not use.

Parameters:

  | name | A pointer to the string containing the name

virtual void MCCOMAPI IPolygon::SetSelection | ( | boolean | selected,
|  | boolean | autoSelection = `true` |
| ) |  |  | `[pure virtual]`

Sets the selection state of the Polygon.

Parameters:

  | selected | If true, selects the Polygon. If false, deselects it.
  | autoSelection | If true, completes the selection with neighboring selected vertices and edges

virtual void MCCOMAPI IPolygon::SetShadingDomainID | ( | int16 | id | ) | `[pure virtual]`

Sets the shading domain to use for this Polygon.

Parameters:

  | id | The shading domain ID to use

virtual void MCCOMAPI IPolygon::SetUVIndexForVertex | ( | I3DExVertex * | vertex,
|  | int32 | uvIndex |
| ) |  |  | `[pure virtual]`

Sets the index of the UV in the UV List of the Vertex to use by the Vertex in this Polygon. Note that this version is slower than the one passed an index to the Vertex in the Polygon.

Parameters:

  | vertex | Pointer to the Vertex in the Polygon
  | uvIndex | The UV index to use

virtual void MCCOMAPI IPolygon::SetUVIndexForVertex | ( | int32 | vertexIndex,
|  | int32 | uvIndex |
| ) |  |  | `[pure virtual]`

Sets the index of the UV in the UV List of the Vertex to use by the Vertex in this Polygon.

Parameters:

  | vertexIndex | Index of the Vertex in the Polygon
  | uvIndex | The UV index to use

virtual void MCCOMAPI IPolygon::Subdivide | ( | ETesselateMode | mode | ) | `[pure virtual]`

Subdivides the Polygon according to the mode specified in the parameter. See VMTypes.h for the list of Subdivision modes.

Parameters:

  | mode | Tessellation mode to use in subdividing

virtual IPolygon* MCCOMAPI IPolygon::Subdivide | ( | I3DExVertex * | v1,
|  | I3DExVertex * | v2 |
| ) |  |  | `[pure virtual]`

This Subdivide function divides the Polygon into two by creating an edge between v1 and v2.

Parameters:

  | v1 | First vertex to split along
  | v2 | Second vertex to split along

Returns:
  A pointer to the new Polygon created.

virtual void MCCOMAPI IPolygon::Triangulate | ( |  | ) | `[pure virtual]`

Triangulates this Polygon, regardless of selection state.

The documentation for this struct was generated from the following file:

- IPolygon.h