remove face index on HalfEdge (#955)

* remove face index on HalfEdge

doesn't appear to actually be used

* remove face index on HalfEdge
This commit is contained in:
Taylor Holliday
2024-09-26 14:07:11 +08:00
committed by GitHub
parent c1d96a6404
commit a24cca1f06
5 changed files with 13 additions and 14 deletions
+2 -2
View File
@@ -286,7 +286,7 @@ std::vector<Halfedge> PairUp(std::vector<EdgePos> &edgePos) {
std::stable_sort(middle, edgePos.end(), cmp);
std::vector<Halfedge> edges;
for (size_t i = 0; i < nEdges; ++i)
edges.push_back({edgePos[i].vert, edgePos[i + nEdges].vert, -1, -1});
edges.push_back({edgePos[i].vert, edgePos[i + nEdges].vert, -1});
return edges;
}
@@ -463,7 +463,7 @@ struct DuplicateHalfedges {
halfedgesR[forwardEdge] = halfedge;
halfedgesR[backwardEdge] = {halfedge.endVert, halfedge.startVert,
forwardEdge, faceRight};
forwardEdge};
halfedgeRef[forwardEdge] = forwardRef;
halfedgeRef[backwardEdge] = backwardRef;
+9 -9
View File
@@ -301,9 +301,9 @@ void Manifold::Impl::DedupeEdge(const int edge) {
int newFace = newHalfedge / 3;
int oldFace = current / 3;
int outsideVert = halfedge_[current].startVert;
halfedge_.push_back({endVert, newVert, -1, newFace});
halfedge_.push_back({newVert, outsideVert, -1, newFace});
halfedge_.push_back({outsideVert, endVert, -1, newFace});
halfedge_.push_back({endVert, newVert, -1});
halfedge_.push_back({newVert, outsideVert, -1});
halfedge_.push_back({outsideVert, endVert, -1});
PairUp(newHalfedge + 2, halfedge_[current].pairedHalfedge);
PairUp(newHalfedge + 1, current);
if (meshRelation_.triRef.size() > 0)
@@ -317,9 +317,9 @@ void Manifold::Impl::DedupeEdge(const int edge) {
++newFace;
oldFace = opposite / 3;
outsideVert = halfedge_[opposite].startVert;
halfedge_.push_back({newVert, endVert, -1, newFace});
halfedge_.push_back({endVert, outsideVert, -1, newFace});
halfedge_.push_back({outsideVert, newVert, -1, newFace});
halfedge_.push_back({newVert, endVert, -1});
halfedge_.push_back({endVert, outsideVert, -1});
halfedge_.push_back({outsideVert, newVert, -1});
PairUp(newHalfedge + 2, halfedge_[opposite].pairedHalfedge);
PairUp(newHalfedge + 1, opposite);
PairUp(newHalfedge, newHalfedge - 3);
@@ -421,7 +421,7 @@ void Manifold::Impl::CollapseTri(const ivec3& triEdge) {
halfedge_[pair1].pairedHalfedge = pair2;
halfedge_[pair2].pairedHalfedge = pair1;
for (int i : {0, 1, 2}) {
halfedge_[triEdge[i]] = {-1, -1, -1, -1};
halfedge_[triEdge[i]] = {-1, -1, -1};
}
}
@@ -447,8 +447,8 @@ void Manifold::Impl::RemoveIfFolded(int edge) {
PairUp(halfedge_[tri0edge[2]].pairedHalfedge,
halfedge_[tri1edge[1]].pairedHalfedge);
for (int i : {0, 1, 2}) {
halfedge_[tri0edge[i]] = {-1, -1, -1, -1};
halfedge_[tri1edge[i]] = {-1, -1, -1, -1};
halfedge_[tri0edge[i]] = {-1, -1, -1};
halfedge_[tri1edge[i]] = {-1, -1, -1};
}
}
}
+1 -1
View File
@@ -469,7 +469,7 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
for (const int i : {0, 1, 2}) {
const int j = (i + 1) % 3;
const int e = 3 * tri + i;
halfedge_[e] = {verts[i], verts[j], -1, tri};
halfedge_[e] = {verts[i], verts[j], -1};
// Sort the forward halfedges in front of the backward ones
// by setting the highest-order bit.
edge[e] = uint64_t(verts[i] < verts[j] ? 1 : 0) << 63 |
-1
View File
@@ -123,7 +123,6 @@ inline vec3 GetBarycentric(const vec3& v, const mat3& triPos,
struct Halfedge {
int startVert, endVert;
int pairedHalfedge;
int face;
bool IsForward() const { return startVert < endVert; }
bool operator<(const Halfedge& other) const {
return startVert == other.startVert ? endVert < other.endVert
+1 -1
View File
@@ -235,7 +235,7 @@ void Manifold::Impl::Finish() {
return std::min(a, b) < 0 ? -1 : std::max(a, b);
};
int face = 0;
Halfedge extrema = {0, 0, 0, 0};
Halfedge extrema = {0, 0, 0};
for (size_t i = 0; i < halfedge_.size(); i++) {
Halfedge e = halfedge_[i];
if (!e.IsForward()) std::swap(e.startVert, e.endVert);