diff --git a/extern/quadriflow/patches/blender.patch b/extern/quadriflow/patches/blender.patch index 9e694a2d616..42e0cd4d235 100644 --- a/extern/quadriflow/patches/blender.patch +++ b/extern/quadriflow/patches/blender.patch @@ -231,3 +231,22 @@ index 355ee008246..a770bbee60c 100644 } allocator.deallocate(values, capacity); capacity = 0; +diff --git a/extern/quadriflow/src/hierarchy.cpp b/extern/quadriflow/src/hierarchy.cpp +index 8cc41da23d0..70a9628320f 100644 +--- a/extern/quadriflow/src/hierarchy.cpp ++++ b/extern/quadriflow/src/hierarchy.cpp +@@ -269,7 +269,13 @@ void Hierarchy::DownsampleGraph(const AdjacentMatrix adj, const MatrixXd& V, con + for (auto it = ad.begin(); it != ad.end(); ++it, ++entry_it) { + int k = it->id; + double dp = N.col(i).dot(N.col(k)); +- double ratio = A[i] > A[k] ? (A[i] / A[k]) : (A[k] / A[i]); ++ double ratio; ++ if (A[i] > A[k]) { ++ ratio = (A[k] == 0.0f) ? 1.0f : A[i] / A[k]; ++ } ++ else { ++ ratio = (A[i] == 0.0f) ? 1.0f : A[k] / A[i]; ++ } + *entry_it = Entry(i, k, dp * ratio); + } + } \ No newline at end of file diff --git a/extern/quadriflow/src/hierarchy.cpp b/extern/quadriflow/src/hierarchy.cpp index 8cc41da23d0..70a9628320f 100644 --- a/extern/quadriflow/src/hierarchy.cpp +++ b/extern/quadriflow/src/hierarchy.cpp @@ -269,7 +269,13 @@ void Hierarchy::DownsampleGraph(const AdjacentMatrix adj, const MatrixXd& V, con for (auto it = ad.begin(); it != ad.end(); ++it, ++entry_it) { int k = it->id; double dp = N.col(i).dot(N.col(k)); - double ratio = A[i] > A[k] ? (A[i] / A[k]) : (A[k] / A[i]); + double ratio; + if (A[i] > A[k]) { + ratio = (A[k] == 0.0f) ? 1.0f : A[i] / A[k]; + } + else { + ratio = (A[i] == 0.0f) ? 1.0f : A[k] / A[i]; + } *entry_it = Entry(i, k, dp * ratio); } }