All Frameworks  Class Hierarchy  This Framework  Previous  Next  Indexes

VisualizationBase Class CAT3DPlanarFaceGP

System.IUnknown
  |
  +---System.IDispatch
    |
    +---System.CATBaseUnknown
      |
      +---VisualizationBase.CATGraphicPrimitive
        |
        +---VisualizationBase.CAT3DBoundingGP
          |
          +---VisualizationBase.CAT3DFaceGP
            |
            +---CAT3DPlanarFaceGP
 

Usage: you must use this class as is. You should never derive it.


public class CAT3DPlanarFaceGP

Class to create the graphic primitive of a 3D planar face.
Role: Special face with only one normal for every vertices. To be used like a CAT3DFaceGP, but with only one normal.


Constructor and Destructor Index


o CAT3DPlanarFaceGP(float[],int,float[],int[],int,int[],int,int[],int[],int,int[],float*,int,char)
Constructs a 3D planar face graphic primitive from the face vertices coordinates list, and their texture coordinates.
o CAT3DPlanarFaceGP(float[],int,float[],int[],int,int[],int,int[],int[],int,int[],float*,int,char,float)
Constructs a 3D planar face graphic primitive from the face vertices coordinates list, and their texture coordinates.
o CAT3DPlanarFaceGP(void)
Default constructor

Method Index


o Draw(CATRender&)
Draws the face.

Constructor and Destructor


o CAT3DPlanarFaceGP
public CAT3DPlanarFaceGP( const float[] iVertices,
const int iVerticesArraySize,
const float[] iNormals,
const int[] iTriangleIndice,
const int iNbTriangle,
const int[] iTriangleStripIndice,
const int iNbTriangleStrip,
const int[] iNbVertexPerTriangleStrip,
const int[] iTriangleFanIndice,
const int iNbTriangleFan,
const int[] iNbVertexPerTriangleFan,
const float* iTextureCoord=NULL,
const int iTextureFormat=3,
const char iAllocMode= ALLOCATE_VERTICES | ALLOCATE_NORMALS | ALLOCATE_TEXTURES)
Constructs a 3D planar face graphic primitive from the face vertices coordinates list, and their texture coordinates. Relying on the allocation mode, parameter data may have to be freed after the face is created. Set, strip and fan information is always duplicated at the face creation. Texture information can be provided at this stage when the texture coordinates have already been computed.
Parameters:
iVertices
Array made of vertices coordinates: XYZXYZXYZ... Its size is equal to three times the face vertices number.
iVerticesArraySize
The size, in floats, of the iVertices array. Equal to three times the vertices number.
iNormals
Array made of the normal coordinates. Its size is always equal to three.
iTriangleIndices
This array is used to store the single triangles vertices. Each of its field represents a vertex index in the iVertices array. As we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three. So, the first three indices of the iTriangleIndices array, are the three vertices indices of the face first single triangle.

                 -----------------       
                | iTriangleIndices|
                 -----------------
                |       i00       |   }
                |       i01       |   } triangle 0 defined by index i00, i01 and i02
                |       i02       |   }
                |        .        |
                |        .        |
                |       ij0       |   }
                |       ij1       |   } triangle j defined by index ij0, ij1 and ij2. 
                |       ij2       |   }
                |        .        |
                |        .        |
                 -----------------

   
For example, index ij0 enables access to the face j-th single triangle first vertex, which coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal has coordinates Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2].
iNbTriangle
The number of single triangles in the face.
iTriangleStripIndices
Array used to store the face triangles strips vertices. Each field contains a vertex index, in the iVertices array. As, we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three.


                   ----------------------
                  | iTriangleStripIndices|
                   ----------------------
                  |          i00         |   }
                  |          i01         |   } first triangle strip defined
                  |           .          |   } by the first n1 indices
                  |           .          |   }
                  |          i0n1        |   }
                  |           .          |
                  |           .          |
                  |           .          |   
                  |          ij0         |   }
                  |          ij1         |   }
                  |           .          |   } triangle strip j
                  |           .          |   } with nj vertices
                  |          ijnj        |   }
                   ----------------------


    
For example, index ij0 allows to access to the face j-th strip first vertex wich coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal coordinates are Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2].
iNbTriangleStrip
The number of face triangles strips.
iNbVertexPerTriangleStrip
Array containing the number of vertices for each face triangles strip. The size of this array is equal to iNbTriangleStrip. For example, the first strip is made with iNbVertexPerTriangleStrip[0] vertices.
                --------------------------
               |iNbVertexPerTriangleStrip |
                --------------------------
               |             n1           |
               |             .            |
               |             .            |   m = Number of triangle strips(iNbTriangleStrip)
               |             nm           |   nm = number of vertices of the m-th strip. (iNbVertexPerTriangleStrip[m]
                --------------------------    

   
iTriangleFanIndices
Array used to store the face triangles fans vertices. Each field contains a vertex index, in the iVertices array. As, we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three.


                   ----------------------
                  | iTriangleFanIndices   |
                   ----------------------
                  |          i00         |   }
                  |          i01         |   } first triangle fan defined
                  |           .          |   } by the first n1 indices
                  |           .          |   }
                  |          i0n1        |   }
                  |           .          |
                  |           .          |
                  |           .          |   
                  |          ij0         |   }
                  |          ij1         |   }
                  |           .          |   } triangle fan j
                  |           .          |   } with nj vertices
                  |          ijnj        |   }
                   ----------------------


    
For example, index ij0 allows to access to the face j-th fan first vertex wich coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal coordinates are Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2]. Each ij0, j in [0, jn], represents the j-th fan center.
iNbTriangleFan
The number of face triangles fans.
iNbVertexPerTriangleFan
Array containing the number of vertices for each face triangles fan. The size of this array is equal to iNbTriangleFan. For example, the first fan is made with iNbVertexPerTriangleStrip[0] vertices.
                --------------------------
               | iNbVertexPerTriangleFan  |
                --------------------------
               |             n1           |
               |             .            |
               |             .            |   m = Number of triangle fans(iNbTriangleFan)
               |             nm           |   nm = number of vertices of the m-th fan. (iNbVertexPerTriangleFan[m]
                --------------------------    

   
iTextureCoord
Array of texture coordinates. Each vertex has an associated position in the texture map. The number of texture coordinates groups is always equal to the number of vertices. Because vertex and normal information is being sorted at the face creation, texture coordinates are to be generated with the tessellation parameters that are retrieved after the face creation (ie with properly translated indices). Nevertheless, a mapping operator can be applied at anytime, when the face is the owner of it's vertex data. If computed before the face creation, texture coordinates can be given at the face construction method. In this case, coordinates order is rearranged in parallel with vertices coordinates.
iTextureFormat
iTextureFormat is the number of fields associated to one vertex in the iTextureCoord array. It is also the number of texture coordinates associated to each vertex. Indeed, each vertex has associated coordinates in the texture map. The number of coordinates depends on the map dimension: the texture map may be in 1D, 2D or 3D.
Legal values:
1
The texture map is a one dimension map. Each vertex has a single associated texture coordinate
2
The texture map is a two-dimension map. Each vertex has two associated texture coordinates
3
The texture map is a three-dimension map. Each vertex has three associated texture coordinates
iAllocMode
The CAT3DFaceGP, and it's planar inherited object, the CAT3DPlanarFaceGP have allocation flags ruling their memory comsumption for vertices and normals: The default value is ALLOCATE_VERTICES | ALLOCATE_NORMALS.
Legal values:
ALLOCATE_VERTICES
Vertex array is the property of the face and is to be deleted with it. If textures are defined, texture coordinates are to be destroyed too.
GET_VERTICES
Vertex array is not duplicated at the face creation, but is to be deleted during the object deletion. Texture coordinates are to be shared, but in this case, their format must be 3.
ALLOCATE_NORMALS
Normal array is the property of the face and is to be deleted with it. Planar faces always allocate their normals.
GET_NORMALS
Normal array is not duplicated at the face creation although, as for vertices, it will be destroyed in the same time the object is deleted.
o CAT3DPlanarFaceGP
public CAT3DPlanarFaceGP( const float[] iVertices,
const int iVerticesArraySize,
const float[] iNormals,
const int[] iTriangleIndice,
const int iNbTriangle,
const int[] iTriangleStripIndice,
const int iNbTriangleStrip,
const int[] iNbVertexPerTriangleStrip,
const int[] iTriangleFanIndice,
const int iNbTriangleFan,
const int[] iNbVertexPerTriangleFan,
const float* iTextureCoord,
const int iTextureFormat,
const char iAllocMode,
const float iToleranceScale)
Constructs a 3D planar face graphic primitive from the face vertices coordinates list, and their texture coordinates. Relying on the allocation mode, parameter data may have to be freed after the face is created. Set, strip and fan information is always duplicated at the face creation. Texture information can be provided at this stage when the texture coordinates have already been computed.
Parameters:
iVertices
Array made of vertices coordinates: XYZXYZXYZ... Its size is equal to three times the face vertices number.
iVerticesArraySize
The size, in floats, of the iVertices array. Equal to three times the vertices number.
iNormals
Array made of the normal coordinates. Its size is always equal to three.
iTriangleIndices
This array is used to store the single triangles vertices. Each of its field represents a vertex index in the iVertices array. As we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three. So, the first three indices of the iTriangleIndices array, are the three vertices indices of the face first single triangle.

                 -----------------       
                | iTriangleIndices|
                 -----------------
                |       i00       |   }
                |       i01       |   } triangle 0 defined by index i00, i01 and i02
                |       i02       |   }
                |        .        |
                |        .        |
                |       ij0       |   }
                |       ij1       |   } triangle j defined by index ij0, ij1 and ij2. 
                |       ij2       |   }
                |        .        |
                |        .        |
                 -----------------

   
For example, index ij0 enables access to the face j-th single triangle first vertex, which coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal has coordinates Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2].
iNbTriangle
The number of single triangles in the face.
iTriangleStripIndices
Array used to store the face triangles strips vertices. Each field contains a vertex index, in the iVertices array. As, we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three.


                   ----------------------
                  | iTriangleStripIndices|
                   ----------------------
                  |          i00         |   }
                  |          i01         |   } first triangle strip defined
                  |           .          |   } by the first n1 indices
                  |           .          |   }
                  |          i0n1        |   }
                  |           .          |
                  |           .          |
                  |           .          |   
                  |          ij0         |   }
                  |          ij1         |   }
                  |           .          |   } triangle strip j
                  |           .          |   } with nj vertices
                  |          ijnj        |   }
                   ----------------------


    
For example, index ij0 allows to access to the face j-th strip first vertex wich coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal coordinates are Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2].
iNbTriangleStrip
The number of face triangles strips.
iNbVertexPerTriangleStrip
Array containing the number of vertices for each face triangles strip. The size of this array is equal to iNbTriangleStrip. For example, the first strip is made with iNbVertexPerTriangleStrip[0] vertices.
                --------------------------
               |iNbVertexPerTriangleStrip |
                --------------------------
               |             n1           |
               |             .            |
               |             .            |   m = Number of triangle strips(iNbTriangleStrip)
               |             nm           |   nm = number of vertices of the m-th strip. (iNbVertexPerTriangleStrip[m]
                --------------------------    

   
iTriangleFanIndices
Array used to store the face triangles fans vertices. Each field contains a vertex index, in the iVertices array. As, we find, in the iVertices array, the XYZ coordinates for each vertex, the indices used to designate the vertices are multiples of three.


                   ----------------------
                  | iTriangleFanIndices   |
                   ----------------------
                  |          i00         |   }
                  |          i01         |   } first triangle fan defined
                  |           .          |   } by the first n1 indices
                  |           .          |   }
                  |          i0n1        |   }
                  |           .          |
                  |           .          |
                  |           .          |   
                  |          ij0         |   }
                  |          ij1         |   }
                  |           .          |   } triangle fan j
                  |           .          |   } with nj vertices
                  |          ijnj        |   }
                   ----------------------


    
For example, index ij0 allows to access to the face j-th fan first vertex wich coordinates are X = iVertices[ij0], Y = iVertices[ij0 + 1] and Z = iVertices[ij0 + 2], and which normal coordinates are Nx = iNormals[ij0], Ny = iNormals[ij0 + 1] and Nz = iNormals[ij0 + 2]. Each ij0, j in [0, jn], represents the j-th fan center.
iNbTriangleFan
The number of face triangles fans.
iNbVertexPerTriangleFan
Array containing the number of vertices for each face triangles fan. The size of this array is equal to iNbTriangleFan. For example, the first fan is made with iNbVertexPerTriangleStrip[0] vertices.
                --------------------------
               | iNbVertexPerTriangleFan  |
                --------------------------
               |             n1           |
               |             .            |
               |             .            |   m = Number of triangle fans(iNbTriangleFan)
               |             nm           |   nm = number of vertices of the m-th fan. (iNbVertexPerTriangleFan[m]
                --------------------------    

   
iTextureCoord
Array of texture coordinates. Each vertex has an associated position in the texture map. The number of texture coordinates groups is always equal to the number of vertices. Because vertex and normal information is being sorted at the face creation, texture coordinates are to be generated with the tessellation parameters that are retrieved after the face creation (ie with properly translated indices). Nevertheless, a mapping operator can be applied at anytime, when the face is the owner of it's vertex data. If computed before the face creation, texture coordinates can be given at the face construction method. In this case, coordinates order is rearranged in parallel with vertices coordinates.
iTextureFormat
iTextureFormat is the number of fields associated to one vertex in the iTextureCoord array. It is also the number of texture coordinates associated to each vertex. Indeed, each vertex has associated coordinates in the texture map. The number of coordinates depends on the map dimension: the texture map may be in 1D, 2D or 3D.
Legal values:
1
The texture map is a one dimension map. Each vertex has a single associated texture coordinate
2
The texture map is a two-dimension map. Each vertex has two associated texture coordinates
3
The texture map is a three-dimension map. Each vertex has three associated texture coordinates
iAllocMode
The CAT3DFaceGP, and it's planar inherited object, the CAT3DPlanarFaceGP have allocation flags ruling their memory comsumption for vertices and normals: The default value is ALLOCATE_VERTICES | ALLOCATE_NORMALS.
Legal values:
ALLOCATE_VERTICES
Vertex array is the property of the face and is to be deleted with it. If textures are defined, texture coordinates are to be destroyed too.
GET_VERTICES
Vertex array is not duplicated at the face creation, but is to be deleted during the object deletion. Texture coordinates are to be shared, but in this case, their format must be 3.
ALLOCATE_NORMALS
Normal array is the property of the face and is to be deleted with it. Planar faces always allocate their normals.
GET_NORMALS
Normal array is not duplicated at the face creation although, as for vertices, it will be destroyed in the same time the object is deleted.
o CAT3DPlanarFaceGP
public CAT3DPlanarFaceGP(void )
Default constructor

Methods


o Draw
public virtual void Draw(CATRender& iRender)
Draws the face.
Parameters:
iRender
The render through which the face is drawn.

This object is included in the file: CAT3DPlanarFaceGP.h
If needed, your Imakefile.mk should include the module: CATViz

Copyright © 2003, Dassault Systèmes. All rights reserved.