PeriDyno 1.2.1
Loading...
Searching...
No Matches
PoissonDiskSampler.h
Go to the documentation of this file.
1
16
17#pragma once
18#include "Node.h"
19
21#include "Topology/PointSet.h"
22#include "Samplers/Sampler.h"
23#include "Field/FilePath.h"
25#include <Volume/VolumeOctree.h>
26#include "SdfSampler.h"
27namespace dyno
28{
29 struct GridIndex
30 {
31 int i, j, k;
32 };
33
34 template<typename TDataType>
35 class PoissonDiskSampler : public SdfSampler<TDataType>
36 {
38
39 public:
40 typedef typename TDataType::Real Real;
41 typedef typename TDataType::Coord Coord;
42
45
46 void resetStates() override;
47
48 private:
49
50 //std::shared_ptr<DistanceField3D<TDataType>> loadSdf();
51
52 //.SDF file
53 //DEF_VAR(FilePath, SdfFileName, "", "");
54
55 std::shared_ptr<DistanceField3D<TDataType>> getSDF() { return m_inputSDF; }
56
58
60
61 bool collisionJudge(Coord point);
62
63 Real lerp(Real a, Real b, Real alpha);
64
65 Real getDistanceFromSDF(const Coord& p, Coord& normal);
66
68
69 int indexTransform(int i, int j, int k);
70
72
74
75 std::vector<int> m_grid;
76
77 std::vector<Coord> m_points;
78
79 std::shared_ptr<DistanceField3D<TDataType>> m_inputSDF;
80
82
83 int nx, ny, nz; //grid number
84
85 unsigned int m_attempted_times = 10;
86
87 Real m_grid_dx; //resolution of grid
88
90
91 };
92
94}
GPU supported signed distance field.
#define IMPLEMENT_TCLASS(name, T1)
Definition Object.h:103
DECLARE_TCLASS(PoissonDiskSampler, TDataType)
std::shared_ptr< DistanceField3D< TDataType > > getSDF()
bool collisionJudge2D(Coord point)
std::shared_ptr< DistanceField3D< TDataType > > m_inputSDF
Real lerp(Real a, Real b, Real alpha)
bool collisionJudge(Coord point)
void resetStates() override
std::vector< Coord > m_points
Real getDistanceFromSDF(const Coord &p, Coord &normal)
int indexTransform(int i, int j, int k)
GridIndex searchGrid(Coord point)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Array3D< T, DeviceType::CPU > CArray3D
Definition Array3D.h:136