HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GT_PrimPolygon Class Reference

Single closed polygon. More...

#include <GT_PrimPolygon.h>

+ Inheritance diagram for GT_PrimPolygon:

Public Member Functions

 GT_PrimPolygon ()
 
 GT_PrimPolygon (const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform)
 
 GT_PrimPolygon (const GT_PrimPolygon &src)
 
 ~GT_PrimPolygon () override
 
const char * className () const override
 
bool save (UT_JSONWriter &w) const override
 
bool init (const GT_AttributeListHandle &vertex, const GT_AttributeListHandle &uniform)
 
GT_Size getVertexCount () const
 
const GT_AttributeListHandlegetVertex () const
 Get the varying data array. There is one entry for each vertex. More...
 
const GT_AttributeListHandlegetUniform () const
 Get the unfirom data. There should be one entry in the array. More...
 
GT_PrimitiveHandle convex (int max_sides=3) const
 
GT_PrimitiveHandle doHarden () const override
 Harden all attributes so there are no dangling dependencies. More...
 
GT_PrimitiveHandle doSoftCopy () const override
 
GT_PrimitiveHandle doAttributeMerge (const GT_Primitive &src, const UT_StringMMPattern *vertex, const UT_StringMMPattern *point, const UT_StringMMPattern *uniform, const UT_StringMMPattern *detail) const override
 The virtual implementation of attribute merging. More...
 
const GT_AttributeListHandlegetVertexAttributes () const override
 
const GT_AttributeListHandlegetUniformAttributes () const override
 
int getPrimitiveType () const override
 
void enlargeBounds (UT_BoundingBox boxes[], int nsegment) const override
 
int getMotionSegments () const override
 
int64 getMemoryUsage () const override
 
fpreal computePerimeter (int seg) const override
 
fpreal computeSurfaceArea (int seg) const override
 
fpreal computeVolume (const UT_Vector3 &ref_P, int seg) const override
 
- Public Member Functions inherited from GT_Primitive
 GT_Primitive ()
 
 GT_Primitive (const GT_Primitive &src)
 
virtual ~GT_Primitive ()
 
virtual bool getUniqueID (int64 &id) const
 
virtual void enlargeRenderBounds (UT_BoundingBox boxes[], int nsegments) const
 
virtual void getVelocityRange (UT_Vector3 &min, UT_Vector3 &max, const UT_StringRef &attribute_name=GA_Names::v) const
 
virtual bool refine (GT_Refine &refiner, const GT_RefineParms *parms=NULL) const
 
const GT_TransformHandlegetPrimitiveTransform () const
 
void setPrimitiveTransform (const GT_TransformHandle &x)
 Set the transform for a the primitive. More...
 
GT_PrimitiveHandle clone () const
 
virtual bool hasDataArray (const UT_StringRef &name, GT_Owner owner_scope[], int num_owners, GT_Storage *storage=NULL, GT_Size *tuple_size=NULL) const
 
virtual bool updateGeoPrim (const GU_ConstDetailHandle &dtl, const GT_RefineParms &parms)
 update any cached data for geometry and its attributes More...
 
void setStaticGeometry (bool static_geo)
 Return true if the primitive represents geometry at frame 'fr'. More...
 
bool isStaticGeometry () const
 
bool isFrameInfoAvailable () const
 
bool getDataIdHash (int64 &hash, int segment=0, bool cache_data_id=false) const
 
virtual bool getTopologyVersion (int64 &version) const
 Returns the topology version for the primitive. More...
 
GT_DataArrayHandle findAttribute (const UT_StringRef &name, GT_Owner &owner, int segment) const
 
void dumpAttributeLists (const char *label, bool data_too) const
 print out all attribute lists More...
 
void dumpPrimitive () const
 
bool saveAttributeLists (UT_JSONWriter &w) const
 
virtual const
GT_ViewportRefineOptions
viewportRefineOptions () const
 
GT_PrimitiveHandle harden () const
 
GT_PrimitiveHandle copyTransformed (const GT_TransformHandle &x, bool force=false) const
 
void refineCopyTransformFrom (const GT_Primitive &src)
 
GT_PrimitiveHandle attributeMerge (const GT_Primitive &src, const UT_StringMMPattern *vertex_pattern, const UT_StringMMPattern *point_pattern, const UT_StringMMPattern *uniform_pattern, const UT_StringMMPattern *detail_pattern) const
 
bool enlargeWidth (UT_BoundingBox boxes[], int nsegments, fpreal defwidth=-1) const
 
virtual const
GT_AttributeListHandle
getPointAttributes () const
 
virtual const
GT_AttributeListHandle
getDetailAttributes () const
 
const GT_AttributeListHandlegetAttributeList (GT_Owner owner) const
 
virtual const GT_DataArrayHandlegetVertexList () const
 
virtual GT_DataArrayHandle createPointNormals (int segment=0, const UT_StringRef &P=GA_Names::P, bool normalize=true, const fpreal32 *pntdata=NULL, GT_Storage store=GT_STORE_REAL32) const
 
- Public Member Functions inherited from UT_IntrusiveRefCounter< GT_Primitive >
SYS_FORCE_INLINE UT_IntrusiveRefCounter () noexcept
 Default constructor: Sets counter to 0. More...
 
SYS_FORCE_INLINE UT_IntrusiveRefCounter (const UT_IntrusiveRefCounter &) noexcept
 Copy constructor: Sets counter to 0. More...
 
UT_IntrusiveRefCounteroperator= (const UT_IntrusiveRefCounter &) noexcept
 Assignment operator: Does not modify counter. More...
 
SYS_FORCE_INLINE uint32 use_count () const noexcept
 Return current counter. More...
 
SYS_FORCE_INLINE bool conditionalAddRef () noexcept
 

Static Public Member Functions

static void computeNormal (UT_Vector3F &N, const GT_DataArray &vertexlist, const GT_DataArray &P)
 
static void computeNormal (UT_Vector3F &N, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P)
 
static void computeNormal (UT_Vector3D &N, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P)
 
static void computeFastNormal (UT_Vector3F &N, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P)
 Compute a normal quickly. The resulting normal will be unit length. More...
 
static void computeFastNormal (UT_Vector3D &N, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P)
 
static void computeFrameOfReference (UT_Vector3 &X, UT_Vector3 &Y, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P)
 Compute a frame of reference for the polygon. More...
 
static void computeNormal (UT_Vector3F &N, const GT_DataArray &P)
 
static void computeNormal (UT_Vector3D &N, const GT_DataArray &P)
 
static fpreal facePerimeter (const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
static fpreal facePerimeter (const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
static fpreal faceSurfaceArea (const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
static fpreal faceSurfaceArea (const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
static fpreal faceVolume (const UT_Vector3 &ref_pt, const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
static fpreal faceVolume (const UT_Vector3 &ref_pt, const GT_DataArray &vertexlist, GT_Size nvtx, GT_Size vtxoff, const GT_DataArray &P, const UT_Matrix4D *xform=nullptr)
 
- Static Public Member Functions inherited from GT_Primitive
static int createPrimitiveTypeId ()
 
static GT_AttributeListHandle mergeAttributeLists (bool &changed, const GT_AttributeListHandle &src, const GT_AttributeListHandle &merge, const UT_StringMMPattern *pattern, const UT_StringMMPattern *alternate=NULL)
 
static bool computeVelocityRange (UT_Vector3 &vmin, UT_Vector3 &vmax, const GT_DataArrayHandle &v)
 
static GT_PrimitiveHandle refineDetail (const GU_ConstDetailHandle &detail, const GT_RefineParms *parms)
 
static GT_PrimitiveHandle refinePrimitive (const GT_PrimitiveHandle &primh, const GT_RefineParms *parms)
 
static voidoperator new (size_t size)
 
static voidoperator new (size_t size, void *p)
 
static void operator delete (void *p, size_t size)
 

Additional Inherited Members

- Protected Member Functions inherited from GT_Primitive
void enlargeP (UT_BoundingBox &box, const GT_AttributeListHandle &list, int segment) const
 
void enlargeP (UT_BoundingBox &B, const GT_DataArrayHandle &P) const
 Convenience method to enlarge a bounding box given a position attribute. More...
 
void enlargePw (UT_BoundingBox &B, const GT_DataArrayHandle &P) const
 
- Protected Member Functions inherited from UT_IntrusiveRefCounter< GT_Primitive >
SYS_FORCE_INLINE ~UT_IntrusiveRefCounter ()
 Destructor: Only derived classes can destruct this. More...
 

Detailed Description

Single closed polygon.

Refine Parameters: PrimPolygon

The parameters inspected for refining a polygon are

  • bool convex
    Whether convexing is required
  • int maxsides
    The maximum sides allowed for a polygon

Definition at line 26 of file GT_PrimPolygon.h.

Constructor & Destructor Documentation

GT_PrimPolygon::GT_PrimPolygon ( )
inline

Definition at line 28 of file GT_PrimPolygon.h.

GT_PrimPolygon::GT_PrimPolygon ( const GT_AttributeListHandle vertex,
const GT_AttributeListHandle uniform 
)
inline

Definition at line 29 of file GT_PrimPolygon.h.

GT_PrimPolygon::GT_PrimPolygon ( const GT_PrimPolygon src)
inline

Definition at line 34 of file GT_PrimPolygon.h.

GT_PrimPolygon::~GT_PrimPolygon ( )
override

Member Function Documentation

const char* GT_PrimPolygon::className ( ) const
inlineoverridevirtual

Implements GT_Primitive.

Definition at line 42 of file GT_PrimPolygon.h.

static void GT_PrimPolygon::computeFastNormal ( UT_Vector3F N,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P 
)
static

Compute a normal quickly. The resulting normal will be unit length.

static void GT_PrimPolygon::computeFastNormal ( UT_Vector3D N,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P 
)
static
static void GT_PrimPolygon::computeFrameOfReference ( UT_Vector3 X,
UT_Vector3 Y,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P 
)
static

Compute a frame of reference for the polygon.

static void GT_PrimPolygon::computeNormal ( UT_Vector3F N,
const GT_DataArray vertexlist,
const GT_DataArray P 
)
inlinestatic

Utility method to compute the normal for an indexed face

Note
If dim(P) == 2, the normal will be (0,0,1)

Definition at line 103 of file GT_PrimPolygon.h.

static void GT_PrimPolygon::computeNormal ( UT_Vector3F N,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P 
)
static

Utility method to compute the normal for an indexed face The face has nvtx vertices in the vertexlist and the first vertex is offset by vtxoff.

Note
If dim(P) == 2, the normal will be (0,0,1)
static void GT_PrimPolygon::computeNormal ( UT_Vector3D N,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P 
)
static
static void GT_PrimPolygon::computeNormal ( UT_Vector3F N,
const GT_DataArray P 
)
static

Utility method to compute the normal for a face

static void GT_PrimPolygon::computeNormal ( UT_Vector3D N,
const GT_DataArray P 
)
static

Utility method to compute the normal for a face

fpreal GT_PrimPolygon::computePerimeter ( int  seg) const
overridevirtual

Methods for GEO/GU support.

Reimplemented from GT_Primitive.

fpreal GT_PrimPolygon::computeSurfaceArea ( int  seg) const
overridevirtual

Methods for GEO/GU support.

Reimplemented from GT_Primitive.

fpreal GT_PrimPolygon::computeVolume ( const UT_Vector3 ref_P,
int  seg 
) const
overridevirtual

Methods for GEO/GU support.

Reimplemented from GT_Primitive.

GT_PrimitiveHandle GT_PrimPolygon::convex ( int  max_sides = 3) const

Convex the polygon. Possible return primitives are

  • NULL (degenerate polygon)
  • a handle to this polygon (this polygon is already convex)
  • a handle to a polygon mesh (multiple polygons)
GT_PrimitiveHandle GT_PrimPolygon::doAttributeMerge ( const GT_Primitive src,
const UT_StringMMPattern vertex,
const UT_StringMMPattern point,
const UT_StringMMPattern uniform,
const UT_StringMMPattern detail 
) const
overridevirtual

The virtual implementation of attribute merging.

Reimplemented from GT_Primitive.

GT_PrimitiveHandle GT_PrimPolygon::doHarden ( ) const
overridevirtual

Harden all attributes so there are no dangling dependencies.

Reimplemented from GT_Primitive.

GT_PrimitiveHandle GT_PrimPolygon::doSoftCopy ( ) const
inlineoverridevirtual

Create a copy of the primitive, referencing all the source data This can return a NULL pointer, but it would be better to implement it properly.

Implements GT_Primitive.

Definition at line 175 of file GT_PrimPolygon.h.

void GT_PrimPolygon::enlargeBounds ( UT_BoundingBox  boxes[],
int  nsegment 
) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

static fpreal GT_PrimPolygon::facePerimeter ( const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute perimeter of a face or an indexed face

static fpreal GT_PrimPolygon::facePerimeter ( const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute perimeter of a face or an indexed face

static fpreal GT_PrimPolygon::faceSurfaceArea ( const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute surface area of a face or an indexed face

static fpreal GT_PrimPolygon::faceSurfaceArea ( const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute surface area of a face or an indexed face

static fpreal GT_PrimPolygon::faceVolume ( const UT_Vector3 ref_pt,
const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute signed volume of a face or an indexed face (given a reference point)

static fpreal GT_PrimPolygon::faceVolume ( const UT_Vector3 ref_pt,
const GT_DataArray vertexlist,
GT_Size  nvtx,
GT_Size  vtxoff,
const GT_DataArray P,
const UT_Matrix4D xform = nullptr 
)
static

Compute signed volume of a face or an indexed face (given a reference point)

int64 GT_PrimPolygon::getMemoryUsage ( ) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

int GT_PrimPolygon::getMotionSegments ( ) const
overridevirtual

Methods defined on GT_Primitive

Implements GT_Primitive.

int GT_PrimPolygon::getPrimitiveType ( ) const
overridevirtual

Methods defined on GT_Primitive

Reimplemented from GT_Primitive.

const GT_AttributeListHandle& GT_PrimPolygon::getUniform ( ) const
inline

Get the unfirom data. There should be one entry in the array.

Definition at line 68 of file GT_PrimPolygon.h.

const GT_AttributeListHandle& GT_PrimPolygon::getUniformAttributes ( ) const
inlineoverridevirtual

Access attributes

Reimplemented from GT_Primitive.

Definition at line 74 of file GT_PrimPolygon.h.

const GT_AttributeListHandle& GT_PrimPolygon::getVertex ( ) const
inline

Get the varying data array. There is one entry for each vertex.

Definition at line 65 of file GT_PrimPolygon.h.

const GT_AttributeListHandle& GT_PrimPolygon::getVertexAttributes ( ) const
inlineoverridevirtual

Access attributes

Reimplemented from GT_Primitive.

Definition at line 72 of file GT_PrimPolygon.h.

GT_Size GT_PrimPolygon::getVertexCount ( ) const
bool GT_PrimPolygon::init ( const GT_AttributeListHandle vertex,
const GT_AttributeListHandle uniform 
)
inline
Parameters
vertexThe length of this array determines the number of vertices. There is one entry per vertex.
uniformData which is constant across the polygon

Definition at line 54 of file GT_PrimPolygon.h.

bool GT_PrimPolygon::save ( UT_JSONWriter w) const
inlineoverridevirtual

Save the primitive to a JSON stream. The default method does nothing and returns false.

Reimplemented from GT_Primitive.

Definition at line 43 of file GT_PrimPolygon.h.


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