25 #ifndef __D_ISO_SURFACE_H__
26 #define __D_ISO_SURFACE_H__
28 #include "dCoreStdafx.h"
39 dFloat32 m_isoValues[2][2][2];
48 dUnsigned64 m_pointId[3];
59 D_CORE_API
void Begin(
const dVector& origin, dFloat32 isovalue, dFloat32 gridSize, dInt32 sizex, dInt32 sizey, dInt32 sizez);
60 D_CORE_API
void ProcessCell(
const dIsoCell& cell);
61 D_CORE_API
void End();
63 const dInt32 GetIndexCount()
const;
64 const dInt32 GetVertexCount()
const;
65 const dVector* GetPoints()
const;
66 const dVector* GetNormals()
const;
67 const dUnsigned64* GetIndexList()
const;
70 dUnsigned64 GetVertexID(dInt32 x, dInt32 y, dInt32 z);
71 dUnsigned64 GetEdgeID(
const dIsoCell& cell, dInt32 edgeCode);
73 dVector InterpolateEdge(dFloat32 fX1, dFloat32 fY1, dFloat32 fZ1, dFloat32 fX2, dFloat32 fY2, dFloat32 fZ2, dFloat32 tVal1, dFloat32 tVal2);
75 void RemapIndexList();
76 void CalculateNormals();
90 static const dInt32 m_edgeTable[];
91 static const dInt32 m_triangleTable[][16];
94 inline const dInt32 dIsoSurface::GetIndexCount()
const
96 return m_trianglesList.GetCount() * 3;
99 inline const dInt32 dIsoSurface::GetVertexCount()
const
101 return m_points.GetCount();
104 inline const dVector* dIsoSurface::GetPoints()
const
106 return m_points.GetCount() ? &m_points[0] :
nullptr;
109 inline const dVector* dIsoSurface::GetNormals()
const
111 return m_normals.GetCount() ? &m_normals[0] :
nullptr;
114 inline const dUnsigned64* dIsoSurface::GetIndexList()
const
116 return m_trianglesList.GetCount() ? &m_trianglesList[0].m_pointId[0] :
nullptr;