PeriDyno 1.0.0
Loading...
Searching...
No Matches
EarClipper.h
Go to the documentation of this file.
1
16
17#pragma once
18#include "ModelEditing.h"
21
22namespace dyno
23{
24 template<typename TDataType>
25 class EarClipper : public ModelEditing<TDataType>
26 {
27
29
30 public:
31 typedef typename TDataType::Real Real;
32 typedef typename TDataType::Coord Coord;
33
34 void varChanged();
35
36 public:
37
39
41
42 DEF_VAR(bool, ReverseNormal, false, "ReverseNormal");
43
44
45
46 protected:
47 void resetStates() override;
48
49 public:
50 EarClipper();
51
52 EarClipper(std::vector<DataType3f::Coord> vts, std::vector<TopologyModule::Triangle>& outTriangles) { polyClip(vts,outTriangles); };
53
55
56 void polyClip(std::vector<DataType3f::Coord> vts, std::vector<TopologyModule::Triangle>& outTriangles);
57
58 void polyClip(DArray<Coord> vts, std::vector<TopologyModule::Triangle>& outTriangles)
59 {
60 if (vts.isEmpty()) { return; }
61 CArray<Coord> c_vts;
62 c_vts.assign(vts);
63
64 std::vector<DataType3f::Coord> vtsvector;
65 for (size_t i = 0; i < c_vts.size(); i++)
66 {
67 vtsvector.push_back(c_vts[i]);
68 }
69
70 this->polyClip(vtsvector, outTriangles);
71 }
72 void polyClip(CArray<Coord> vts, std::vector<TopologyModule::Triangle>& outTriangles)
73 {
74 if (vts.isEmpty()) { return; }
75
76 std::vector<DataType3f::Coord> vtsvector;
77 for (size_t i = 0; i < vts.size(); i++)
78 {
79 vtsvector.push_back(vts[i]);
80 }
81
82 this->polyClip(vtsvector, outTriangles);
83 }
84
85 };
86
88}
#define IMPLEMENT_TCLASS(name, T1)
Definition Object.h:103
void polyClip(CArray< Coord > vts, std::vector< TopologyModule::Triangle > &outTriangles)
Definition EarClipper.h:72
DEF_VAR(bool, ReverseNormal, false, "ReverseNormal")
void polyClip(DArray< Coord > vts, std::vector< TopologyModule::Triangle > &outTriangles)
Definition EarClipper.h:58
TDataType::Real Real
Definition EarClipper.h:31
EarClipper(std::vector< DataType3f::Coord > vts, std::vector< TopologyModule::Triangle > &outTriangles)
Definition EarClipper.h:52
DEF_INSTANCE_IN(PointSet< TDataType >, PointSet, "")
void resetStates() override
DECLARE_TCLASS(EarClipper, TDataType)
void polyClip(std::vector< DataType3f::Coord > vts, std::vector< TopologyModule::Triangle > &outTriangles)
TDataType::Coord Coord
Definition EarClipper.h:32
DEF_INSTANCE_STATE(TriangleSet< TDataType >, TriangleSet, "")
A PointSet stores the coordinates for a set of independent points.
Definition PointSet.h:8
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Array< T, DeviceType::GPU > DArray
Definition Array.inl:89
Array< T, DeviceType::CPU > CArray
Definition Array.h:151