Skip to content

Commit eb04b99

Browse files
committed
fix compose index error
#425 (comment)
1 parent 1615b72 commit eb04b99

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

src/manifold/src/csg_tree.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,13 @@ Manifold::Impl CsgLeafNode::Compose(
221221
combined.halfedge_.begin() + edgeIndices[i],
222222
UpdateHalfedge({vertIndices[i], edgeIndices[i], triIndices[i]}));
223223
const bool invert = glm::determinant(glm::mat3(node->transform_)) < 0;
224-
for_each_n(
225-
policy,
226-
zip(combined.halfedgeTangent_.begin(), countAt(edgeIndices[i])),
227-
node->pImpl_->halfedgeTangent_.size(),
228-
TransformTangents{glm::mat3(node->transform_), invert,
229-
node->pImpl_->halfedgeTangent_.cptrD(),
230-
node->pImpl_->halfedge_.cptrD()});
224+
for_each_n(policy,
225+
zip(combined.halfedgeTangent_.begin() + edgeIndices[i],
226+
countAt(0)),
227+
node->pImpl_->halfedgeTangent_.size(),
228+
TransformTangents{glm::mat3(node->transform_), invert,
229+
node->pImpl_->halfedgeTangent_.cptrD(),
230+
node->pImpl_->halfedge_.cptrD()});
231231
if (invert)
232232
for_each_n(policy,
233233
zip(combined.meshRelation_.triRef.begin(),

test/manifold_test.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,3 +1088,12 @@ TEST(Manifold, Invalid) {
10881088
EXPECT_EQ(Manifold::Extrude(empty_circ, 10.).Status(), invalid);
10891089
EXPECT_EQ(Manifold::Revolve(empty_sq).Status(), invalid);
10901090
}
1091+
1092+
TEST(Manifold, MultiCompose) {
1093+
auto legAssembly = Manifold::Compose({Manifold::Cube({100, 140, 38})});
1094+
auto finalAssembly = Manifold::Compose(
1095+
{legAssembly, legAssembly.Translate({0, 300, 0}),
1096+
legAssembly.Mirror({1, 0, 0}).Translate({300, 0, 0}),
1097+
legAssembly.Mirror({1, 0, 0}).Translate({300, 300, 0})});
1098+
finalAssembly.GetMesh();
1099+
}

0 commit comments

Comments
 (0)