-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mesh distance symmetric #2041
base: master
Are you sure you want to change the base?
Mesh distance symmetric #2041
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, just a couple minor things.
auto field = m.distance(m2)[0]; | ||
auto field = m.distance(m2, Mesh::DistanceMethod::SymmetricPointToCell)[0]; | ||
// TODO: disable debug | ||
std::cout << "Debug Mode | Computing distance with SymmetricPointToCell method in Studio Viewer " << std::endl; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
K, let's remove this debug line and I think it's good to go.
referenceMesh (point) -> targetMesh (cell) (and get closestPoint) | ||
referenceMesh (cell) -> targetMesh (closestPoint) | ||
*/ | ||
auto targetCellLocator = vtkSmartPointer<vtkCellLocator>::New(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use the faster vtkStaticCellLocator
targetCellLocator->SetDataSet(target.poly_data_); | ||
targetCellLocator->BuildLocator(); | ||
|
||
auto refCellLocator = vtkSmartPointer<vtkCellLocator>::New(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vtkStaticCellLocator as above
Hello, I propose also to add the signed point-to-cell metric, I will amend the commit |
@@ -556,6 +556,42 @@ std::vector<Field> Mesh::distance(const Mesh& target, const DistanceMethod metho | |||
} | |||
} break; | |||
|
|||
case SymmetricPointToCell: { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing a unit test for that case ?
@nawazishkhan1-nk , do you have an update on the PR? |
@nawazishkhan1-nk , any update on this? |
I don't have the time but I suggest we add the signed point-to-cell metric: the sign is defined as follow: // Determine the signed distance |
Additionally, instead of this symmetric distance (that will never be higher than traditional point-to-cell metric), I would propose that we implement the Chamfer Distance (sum of A to B and B to A distances) which is used in numerous publications to compare mesh to mesh. |
The Chamfer Distance, as far as I can find, is only defined for point sets. Do you propose to use vertices only and not the point to cell distance? |
Yes from point sets only. It would be an additional metric along signed and absolute point-to-cell distances. |
[WIP] - Do Not Merge
Summary
This PR addresses issue #2040.
Changes Made
Testing Done
Known Issues
Screenshots
Symmetric Point-to-cell distance vs. regular Point-to-cell distance