PeriDyno 1.0.0
Loading...
Searching...
No Matches
TetrahedronSet.cpp
Go to the documentation of this file.
1#include "TetrahedronSet.h"
2#include "VkTransfer.h"
3
4namespace dyno
5{
10
15
16 void TetrahedronSet::setTetrahedrons(std::vector<TopologyModule::Tetrahedron>& indices)
17 {
18 mTetrahedronIndex.assign(indices);
19 }
20
22 {
25 mIndex.assign(es.mIndex);
26 mEdgeIndex.assign(es.mEdgeIndex);
27 mPoints.assign(es.mPoints);
28 }
29
31 {
32 std::vector<dyno::TopologyModule::Tetrahedron> tets(mTetrahedronIndex.size());
33 std::vector<uint32_t> tris;
34
35 std::vector<dyno::TopologyModule::Triangle> triangles;
36
37 //TODO: atomic operations are not supported yet, replace the following implementation with a parallel algorithm later.
38 vkTransfer(tets, *mTetrahedronIndex.handle());
39 //tets.assign(mTetrahedronIndex);
40
41 for (size_t i = 0; i < tets.size(); i++)
42 {
43 uint32_t v0 = tets[i][0];
44 uint32_t v1 = tets[i][1];
45 uint32_t v2 = tets[i][2];
46 uint32_t v3 = tets[i][3];
47
48 tris.push_back(v0);
49 tris.push_back(v1);
50 tris.push_back(v2);
51
52 tris.push_back(v0);
53 tris.push_back(v3);
54 tris.push_back(v1);
55
56 tris.push_back(v0);
57 tris.push_back(v2);
58 tris.push_back(v3);
59
60 tris.push_back(v1);
61 tris.push_back(v3);
62 tris.push_back(v2);
63
64 triangles.push_back(dyno::TopologyModule::Triangle(v0, v1, v2));
65 triangles.push_back(dyno::TopologyModule::Triangle(v0, v1, v3));
66 triangles.push_back(dyno::TopologyModule::Triangle(v0, v2, v3));
67 triangles.push_back(dyno::TopologyModule::Triangle(v1, v2, v3));
68 }
69
70 mIndex.resize(tris.size());
71 mTriangleIndex.resize(triangles.size());
72
73 //vkTransfer(mIndex, tris);
74 mIndex.assign(tris);
75 //vkTransfer(mTriangleIndex, triangles);
76 mTriangleIndex.assign(triangles);
77
78 tets.clear();
79 tris.clear();
80 triangles.clear();
81 }
82
83}
DArray< Edge > mEdgeIndex
Definition EdgeSet.h:28
DArray< Vec3f > mPoints
Definition PointSet.h:21
DArray< TopologyModule::Tetrahedron > mTetrahedronIndex
void updateTopology() override
void copyFrom(TetrahedronSet< TDataType > &tetSet)
void setTetrahedrons(std::vector< Tetrahedron > &tetrahedrons)
Vector< PointType, 3 > Triangle
DArray< Triangle > mTriangleIndex
DArray< uint32_t > mIndex
Definition TriangleSet.h:27
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
bool vkTransfer(VkHostArray< T > &dst, const VkDeviceArray< T > &src)
Definition VkTransfer.inl:7