PeriDyno 1.2.1
Loading...
Searching...
No Matches
MarchingCubesHelper.h
Go to the documentation of this file.
1
16#pragma once
17
18#include "Vector.h"
19#include "DataTypes.h"
20
22
25
26namespace dyno
27{
28#define Inside( a, iso, h ) \
29 ((a) < float(iso - 0.001953125 * h ))
30
31#define Outside( a, iso, h ) \
32 ((a) > float( iso + 0.001953125 * h ))
33
34#define OnSurface( a, iso, h ) \
35 ((a) <= float( iso + 0.001953125 * h ) && (a) >= float(iso - 0.001953125 * h ))
36
37 template<typename TDataType>
39 {
40 public:
41 typedef typename TDataType::Real Real;
42 typedef typename TDataType::Coord Coord;
43
45
46 static void reconstructSDF(
47 DArray3D<Real>& distances,
48 Coord origin,
49 Real h,
51
52 static void countVerticeNumber(
53 DArray<int>& num,
54 DArray3D<Real>& distances,
55 Real isoValue,
56 Real h);
57
58 static void constructTriangles(
59 DArray<Coord>& vertices,
61 DArray<int>& vertNum,
62 DArray3D<Real>& distances,
63 Coord origin,
64 Real isoValue,
65 Real h);
66
68 DArray<int>& num,
70 TPlane3D<Real> plane);
71
73 DArray<Real>& field,
74 DArray<Coord>& vertices,
76 DArray<int>& vertNum,
78 TPlane3D<Real> plane);
79
80
82 DArray<uint>& num,
83 DArray<Coord>& vertices,
84 DArray<Real>& sdfs,
85 Real isoValue);
86
88 DArray<Coord>& triangleVertices,
90 DArray<uint>& num,
91 DArray<Coord>& cellVertices,
92 DArray<Real>& sdfs,
93 Real isoValue);
94
96 DArray<uint>& num,
97 DArray<Coord>& vertices,
98 TPlane3D<Real> plane);
99
101 DArray<Real>& vertSDFs,
102 DArray<Coord>& triangleVertices,
104 DArray<uint>& num,
105 DArray<Coord>& cellVertices,
106 DArray<Real>& sdfs,
107 TPlane3D<Real> plane);
108 };
109}
GPU supported signed distance field.
static void countVerticeNumber(DArray< int > &num, DArray3D< Real > &distances, Real isoValue, Real h)
static void reconstructSDF(DArray3D< Real > &distances, Coord origin, Real h, DistanceField3D< TDataType > &sdf)
static void countVerticeNumberForOctree(DArray< uint > &num, DArray< Coord > &vertices, DArray< Real > &sdfs, Real isoValue)
static void countVerticeNumberForOctreeClipper(DArray< uint > &num, DArray< Coord > &vertices, TPlane3D< Real > plane)
static void constructTrianglesForOctree(DArray< Coord > &triangleVertices, DArray< TopologyModule::Triangle > &triangles, DArray< uint > &num, DArray< Coord > &cellVertices, DArray< Real > &sdfs, Real isoValue)
static void constructTrianglesForOctreeClipper(DArray< Real > &vertSDFs, DArray< Coord > &triangleVertices, DArray< TopologyModule::Triangle > &triangles, DArray< uint > &num, DArray< Coord > &cellVertices, DArray< Real > &sdfs, TPlane3D< Real > plane)
static void constructTrianglesForClipper(DArray< Real > &field, DArray< Coord > &vertices, DArray< TopologyModule::Triangle > &triangles, DArray< int > &vertNum, DistanceField3D< TDataType > &sdf, TPlane3D< Real > plane)
static void countVerticeNumberForClipper(DArray< int > &num, DistanceField3D< TDataType > &sdf, TPlane3D< Real > plane)
static void constructTriangles(DArray< Coord > &vertices, DArray< TopologyModule::Triangle > &triangles, DArray< int > &vertNum, DArray3D< Real > &distances, Coord origin, Real isoValue, Real h)
2D geometric primitives in three-dimensional space
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Array< T, DeviceType::GPU > DArray
Definition Array.inl:89
Array3D< T, DeviceType::GPU > DArray3D
Definition Array3D.inl:90