Renamed getEdges and getVertices to computeEdges and computeVertices
This commit is contained in:
parent
ec7160e637
commit
bef2ae8860
|
|
@ -78,12 +78,13 @@ double PatternGeometry::getTriangleEdgeSize() const { return triangleEdgeSize; }
|
||||||
|
|
||||||
PatternGeometry::PatternGeometry() {}
|
PatternGeometry::PatternGeometry() {}
|
||||||
|
|
||||||
std::vector<vcg::Point3d> PatternGeometry::getVertices() const {
|
std::vector<vcg::Point3d> PatternGeometry::computeVertices() const
|
||||||
std::vector<VCGEdgeMesh::CoordType> verts(VN());
|
{
|
||||||
for (size_t vi = 0; vi < VN(); vi++) {
|
std::vector<VCGEdgeMesh::CoordType> verts(VN());
|
||||||
verts[vi] = vert[vi].cP();
|
for (size_t vi = 0; vi < VN(); vi++) {
|
||||||
}
|
verts[vi] = vert[vi].cP();
|
||||||
return verts;
|
}
|
||||||
|
return verts;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatternGeometry PatternGeometry::createTile(PatternGeometry &pattern)
|
PatternGeometry PatternGeometry::createTile(PatternGeometry &pattern)
|
||||||
|
|
@ -140,13 +141,19 @@ PatternGeometry PatternGeometry::createFan(PatternGeometry &pattern) {
|
||||||
return fan;
|
return fan;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatternGeometry::PatternGeometry(PatternGeometry &other) {
|
void PatternGeometry::updateBaseTriangle()
|
||||||
vcg::tri::Append<PatternGeometry, PatternGeometry>::MeshCopy(*this, other);
|
{
|
||||||
this->vertices = other.getVertices();
|
baseTriangle = computeBaseTriangle();
|
||||||
baseTriangle = other.getBaseTriangle();
|
}
|
||||||
baseTriangleHeight = computeBaseTriangleHeight();
|
|
||||||
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
PatternGeometry::PatternGeometry(PatternGeometry &other)
|
||||||
vcg::tri::UpdateTopology<PatternGeometry>::EdgeEdge(*this);
|
{
|
||||||
|
vcg::tri::Append<PatternGeometry, PatternGeometry>::MeshCopy(*this, other);
|
||||||
|
this->vertices = other.computeVertices();
|
||||||
|
baseTriangle = other.getBaseTriangle();
|
||||||
|
baseTriangleHeight = computeBaseTriangleHeight();
|
||||||
|
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
||||||
|
vcg::tri::UpdateTopology<PatternGeometry>::EdgeEdge(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PatternGeometry::load(const std::filesystem::__cxx11::path &meshFilePath)
|
bool PatternGeometry::load(const std::filesystem::__cxx11::path &meshFilePath)
|
||||||
|
|
@ -166,7 +173,7 @@ bool PatternGeometry::load(const std::filesystem::__cxx11::path &meshFilePath)
|
||||||
void PatternGeometry::add(const std::vector<vcg::Point3d> &vertices) {
|
void PatternGeometry::add(const std::vector<vcg::Point3d> &vertices) {
|
||||||
this->vertices = vertices;
|
this->vertices = vertices;
|
||||||
std::for_each(vertices.begin(), vertices.end(), [&](const vcg::Point3d &p) {
|
std::for_each(vertices.begin(), vertices.end(), [&](const vcg::Point3d &p) {
|
||||||
vcg::tri::Allocator<PatternGeometry>::AddVertex(*this, p);
|
vcg::tri::Allocator<PatternGeometry>::AddVertex(*this, p, DefaultNormal);
|
||||||
});
|
});
|
||||||
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
||||||
vcg::tri::UpdateTopology<PatternGeometry>::EdgeEdge(*this);
|
vcg::tri::UpdateTopology<PatternGeometry>::EdgeEdge(*this);
|
||||||
|
|
@ -754,27 +761,28 @@ PatternGeometry::getIntersectingEdges(
|
||||||
return intersectingEdges;
|
return intersectingEdges;
|
||||||
}
|
}
|
||||||
|
|
||||||
PatternGeometry::PatternGeometry(const std::string &filename,
|
PatternGeometry::PatternGeometry(const std::filesystem::path &patternFilePath,
|
||||||
bool addNormalsIfAbsent) {
|
bool addNormalsIfAbsent)
|
||||||
if (!std::filesystem::exists(std::filesystem::path(filename))) {
|
{
|
||||||
assert(false);
|
if (!std::filesystem::exists(std::filesystem::path(patternFilePath))) {
|
||||||
std::cerr << "No flat pattern with name " << filename << std::endl;
|
assert(false);
|
||||||
return;
|
std::cerr << "No flat pattern with name " << patternFilePath << std::endl;
|
||||||
}
|
return;
|
||||||
if (!load(filename)) {
|
}
|
||||||
assert(false);
|
if (!load(patternFilePath)) {
|
||||||
std::cerr << "File could not be loaded " << filename << std::endl;
|
assert(false);
|
||||||
return;
|
std::cerr << "File could not be loaded " << patternFilePath << std::endl;
|
||||||
}
|
return;
|
||||||
if (addNormalsIfAbsent) {
|
}
|
||||||
addNormals();
|
if (addNormalsIfAbsent) {
|
||||||
}
|
addNormals();
|
||||||
|
}
|
||||||
|
|
||||||
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
vcg::tri::UpdateTopology<PatternGeometry>::VertexEdge(*this);
|
||||||
baseTriangleHeight = computeBaseTriangleHeight();
|
baseTriangleHeight = computeBaseTriangleHeight();
|
||||||
baseTriangle = computeBaseTriangle();
|
baseTriangle = computeBaseTriangle();
|
||||||
|
|
||||||
updateEigenEdgeAndVertices();
|
updateEigenEdgeAndVertices();
|
||||||
}
|
}
|
||||||
|
|
||||||
double PatternGeometry::computeBaseTriangleHeight() const
|
double PatternGeometry::computeBaseTriangleHeight() const
|
||||||
|
|
@ -867,8 +875,8 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
assert(vcg::tri::HasFEAdjacency(tileInto));
|
assert(vcg::tri::HasFEAdjacency(tileInto));
|
||||||
assert(vcg::tri::HasFVAdjacency(tileInto));
|
assert(vcg::tri::HasFVAdjacency(tileInto));
|
||||||
for (const VCGPolyMesh::FaceType &f : tileInto.face) {
|
for (const VCGPolyMesh::FaceType &f : tileInto.face) {
|
||||||
const int facePatternIndex = perSurfaceFacePatternIndices[tileInto.getIndex(f)];
|
const int patternIndex = perSurfaceFacePatternIndices[tileInto.getIndex(f)];
|
||||||
if (facePatternIndex == -1) {
|
if (patternIndex == -1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
CoordType centerOfFace(0, 0, 0);
|
CoordType centerOfFace(0, 0, 0);
|
||||||
|
|
@ -884,7 +892,7 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
for (int &vi : firstInFanConnectToNeighbor_vi) {
|
for (int &vi : firstInFanConnectToNeighbor_vi) {
|
||||||
vi += pTiledPattern->VN();
|
vi += pTiledPattern->VN();
|
||||||
}
|
}
|
||||||
ConstPatternGeometry &pattern = patterns[facePatternIndex];
|
ConstPatternGeometry &pattern = patterns[patternIndex];
|
||||||
|
|
||||||
for (size_t vi = 0; vi < f.VN(); vi++) {
|
for (size_t vi = 0; vi < f.VN(); vi++) {
|
||||||
auto ep = f.FEp(vi);
|
auto ep = f.FEp(vi);
|
||||||
|
|
@ -909,9 +917,9 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
//Transform the base triangle nodes to the mesh triangle using barycentric coords
|
//Transform the base triangle nodes to the mesh triangle using barycentric coords
|
||||||
for (int vi = 0; vi < transformedPattern.VN(); vi++) {
|
for (int vi = 0; vi < transformedPattern.VN(); vi++) {
|
||||||
transformedPattern.vert[vi].P() = CoordType(
|
transformedPattern.vert[vi].P() = CoordType(
|
||||||
meshTrianglePoints[0] * barycentricCoordinates[facePatternIndex][vi][0]
|
meshTrianglePoints[0] * barycentricCoordinates[patternIndex][vi][0]
|
||||||
+ meshTrianglePoints[1] * barycentricCoordinates[facePatternIndex][vi][1]
|
+ meshTrianglePoints[1] * barycentricCoordinates[patternIndex][vi][1]
|
||||||
+ meshTrianglePoints[2] * barycentricCoordinates[facePatternIndex][vi][2]);
|
+ meshTrianglePoints[2] * barycentricCoordinates[patternIndex][vi][2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (VertexType &v : transformedPattern.vert) {
|
for (VertexType &v : transformedPattern.vert) {
|
||||||
|
|
@ -923,7 +931,7 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
transformedPattern,
|
transformedPattern,
|
||||||
remap);
|
remap);
|
||||||
for (size_t ei = 0; ei < pattern.EN(); ei++) {
|
for (size_t ei = 0; ei < pattern.EN(); ei++) {
|
||||||
perPatternIndexToTiledPatternEdgeIndex[facePatternIndex].push_back(remap.edge[ei]);
|
perPatternIndexToTiledPatternEdgeIndex[patternIndex].push_back(remap.edge[ei]);
|
||||||
}
|
}
|
||||||
const size_t ei = tileInto.getIndex(ep);
|
const size_t ei = tileInto.getIndex(ep);
|
||||||
tileIntoEdgeToInterfaceVi[ei].push_back(remap.vert[pattern.interfaceNodeIndex]);
|
tileIntoEdgeToInterfaceVi[ei].push_back(remap.vert[pattern.interfaceNodeIndex]);
|
||||||
|
|
@ -938,7 +946,7 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
firstInFanConnectToNeighbor_vi[connectToNeighborIndex],
|
firstInFanConnectToNeighbor_vi[connectToNeighborIndex],
|
||||||
pTiledPattern->VN() - pattern.VN()
|
pTiledPattern->VN() - pattern.VN()
|
||||||
+ connectToNeighborsVi[connectToNeighborIndex]);
|
+ connectToNeighborsVi[connectToNeighborIndex]);
|
||||||
perPatternIndexToTiledPatternEdgeIndex[facePatternIndex].push_back(
|
perPatternIndexToTiledPatternEdgeIndex[patternIndex].push_back(
|
||||||
pTiledPattern->getIndex(*eIt));
|
pTiledPattern->getIndex(*eIt));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -952,15 +960,15 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
+ connectToNeighborsVi[connectToNeighborIndex],
|
+ connectToNeighborsVi[connectToNeighborIndex],
|
||||||
pTiledPattern->VN() - pattern.VN()
|
pTiledPattern->VN() - pattern.VN()
|
||||||
+ connectToNeighborsVi[connectToNeighborIndex]);
|
+ connectToNeighborsVi[connectToNeighborIndex]);
|
||||||
perPatternIndexToTiledPatternEdgeIndex[facePatternIndex].push_back(
|
perPatternIndexToTiledPatternEdgeIndex[patternIndex].push_back(
|
||||||
pTiledPattern->getIndex(*eIt));
|
pTiledPattern->getIndex(*eIt));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// tiledPattern.updateEigenEdgeAndVertices();
|
// pTiledPattern->updateEigenEdgeAndVertices();
|
||||||
// tiledPattern.registerForDrawing();
|
// pTiledPattern->registerForDrawing();
|
||||||
|
|
||||||
// polyscope::show();
|
// polyscope::show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vcg::tri::Allocator<VCGEdgeMesh>::PointerUpdater<VertexPointer> pu_vertices;
|
vcg::tri::Allocator<VCGEdgeMesh>::PointerUpdater<VertexPointer> pu_vertices;
|
||||||
|
|
@ -987,6 +995,7 @@ std::shared_ptr<PatternGeometry> PatternGeometry::tilePattern(
|
||||||
return sum + v.size();
|
return sum + v.size();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const int en = pTiledPattern->EN();
|
||||||
assert(pTiledPattern->EN() == sumOfEdgeIndices);
|
assert(pTiledPattern->EN() == sumOfEdgeIndices);
|
||||||
|
|
||||||
tileIntoEdgesToTiledVi.clear();
|
tileIntoEdgesToTiledVi.clear();
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ private:
|
||||||
bool hasDanglingEdges(const std::vector<size_t> &numberOfNodesPerSlot);
|
bool hasDanglingEdges(const std::vector<size_t> &numberOfNodesPerSlot);
|
||||||
bool hasValenceGreaterThan(const std::vector<size_t> &numberOfNodesPerSlot,
|
bool hasValenceGreaterThan(const std::vector<size_t> &numberOfNodesPerSlot,
|
||||||
const size_t &valenceThreshold);
|
const size_t &valenceThreshold);
|
||||||
std::vector<vcg::Point3d> getVertices() const;
|
std::vector<vcg::Point3d> computeVertices() const;
|
||||||
static PatternGeometry createFan(PatternGeometry &pattern);
|
static PatternGeometry createFan(PatternGeometry &pattern);
|
||||||
static PatternGeometry createTile(PatternGeometry &pattern);
|
static PatternGeometry createTile(PatternGeometry &pattern);
|
||||||
double getTriangleEdgeSize() const;
|
double getTriangleEdgeSize() const;
|
||||||
|
|
@ -85,7 +85,7 @@ private:
|
||||||
|
|
||||||
PatternGeometry(const std::vector<size_t> &numberOfNodesPerSlot,
|
PatternGeometry(const std::vector<size_t> &numberOfNodesPerSlot,
|
||||||
const std::vector<vcg::Point2i> &edges);
|
const std::vector<vcg::Point2i> &edges);
|
||||||
PatternGeometry(const std::string &filename, bool addNormalsIfAbsent = true);
|
PatternGeometry(const std::filesystem::path &patternFilePath, bool addNormalsIfAbsent = true);
|
||||||
|
|
||||||
bool createHoneycombAtom();
|
bool createHoneycombAtom();
|
||||||
void copy(PatternGeometry ©From);
|
void copy(PatternGeometry ©From);
|
||||||
|
|
@ -129,6 +129,7 @@ private:
|
||||||
void deleteDanglingVertices() override;
|
void deleteDanglingVertices() override;
|
||||||
void deleteDanglingVertices(
|
void deleteDanglingVertices(
|
||||||
vcg::tri::Allocator<VCGEdgeMesh>::PointerUpdater<VertexPointer> &pu) override;
|
vcg::tri::Allocator<VCGEdgeMesh>::PointerUpdater<VertexPointer> &pu) override;
|
||||||
|
void updateBaseTriangle();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FLATPATTERNGEOMETRY_HPP
|
#endif // FLATPATTERNGEOMETRY_HPP
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue