Opcode 三角索引结构

来源:互联网 发布:剑三脸型数据怎么导出 编辑:程序博客网 时间:2024/04/30 13:13
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////** *Contains a handy indexed triangle class. *\fileIceIndexedTriangle.h *\authorPierre Terdiman *\dateJanuary, 17, 2000 *///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Include Guard#ifndef __ICEINDEXEDTRIANGLE_H__#define __ICEINDEXEDTRIANGLE_H__// Forward declarationsenum CubeIndex;// An indexed triangle class.class ICEMATHS_API IndexedTriangle{public://! Constructorinline_IndexedTriangle(){}//! Constructorinline_IndexedTriangle(udword r0, udword r1, udword r2){ mVRef[0]=r0; mVRef[1]=r1; mVRef[2]=r2; }//! Copy constructorinline_IndexedTriangle(const IndexedTriangle& triangle){mVRef[0] = triangle.mVRef[0];mVRef[1] = triangle.mVRef[1];mVRef[2] = triangle.mVRef[2];}//! Destructorinline_~IndexedTriangle(){}//! Vertex-referencesudwordmVRef[3];// MethodsvoidFlip();floatArea(const Point* verts)const;floatPerimeter(const Point* verts)const;floatCompacity(const Point* verts)const;voidNormal(const Point* verts, Point& normal)const;voidDenormalizedNormal(const Point* verts, Point& normal)const;voidCenter(const Point* verts, Point& center)const;voidCenteredNormal(const Point* verts, Point& normal)const;voidRandomPoint(const Point* verts, Point& random)const;boolIsVisible(const Point* verts, const Point& source)const;boolBackfaceCulling(const Point* verts, const Point& source)const;floatComputeOcclusionPotential(const Point* verts, const Point& view)const;boolReplaceVertex(udword oldref, udword newref);boolIsDegenerate()const;boolHasVertex(udword ref)const;boolHasVertex(udword ref, udword* index)const;ubyteFindEdge(udword vref0, udword vref1)const;udwordOppositeVertex(udword vref0, udword vref1)const;inline_udwordOppositeVertex(ubyte edgenb)const{ return mVRef[2-edgenb];}voidGetVRefs(ubyte edgenb, udword& vref0, udword& vref1, udword& vref2)const;floatMinEdgeLength(const Point* verts)const;floatMaxEdgeLength(const Point* verts)const;voidComputePoint(const Point* verts, float u, float v, Point& pt, udword* nearvtx=null)const;floatAngle(const IndexedTriangle& tri, const Point* verts)const;inline_PlanePlaneEquation(const Point* verts)const{ return Plane(verts[mVRef[0]], verts[mVRef[1]], verts[mVRef[2]]);}boolEqual(const IndexedTriangle& tri)const;CubeIndexComputeCubeIndex(const Point* verts)const;};#endif // __ICEINDEXEDTRIANGLE_H__


索引结构udword 必须满足  size(udword)==4

 

 

原创粉丝点击