MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / faceConeTest

Method faceConeTest

tools/MeshUtils/TriangleMetric.cpp:729–835  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

727}
728
729bool TriangleMetric::faceConeTest(Point& p, int tri_idx) {
730 //m_ft_types[tri_idx] = VERTEX;
731 //m_ft_idx[tri_idx] = 0;
732 //if (vertexConeTest(p, tri_idx)) {
733 // return false;
734 //}
735 //m_ft_types[tri_idx] = VERTEX;
736 //m_ft_idx[tri_idx] = 1;
737 //if (vertexConeTest(p, tri_idx)) {
738 // return false;
739 //}
740 //m_ft_types[tri_idx] = VERTEX;
741 //m_ft_idx[tri_idx] = 2;
742 //if (vertexConeTest(p, tri_idx)) {
743 // return false;
744 //}
745
746 //m_ft_types[tri_idx] = EDGE;
747 //m_ft_idx[tri_idx] = 0;
748 //if (edgeConeTest(p, tri_idx)) {
749 // return false;
750 //}
751 //m_ft_types[tri_idx] = EDGE;
752 //m_ft_idx[tri_idx] = 1;
753 //if (edgeConeTest(p, tri_idx)) {
754 // return false;
755 //}
756 //m_ft_types[tri_idx] = EDGE;
757 //m_ft_idx[tri_idx] = 2;
758 //if (edgeConeTest(p, tri_idx)) {
759 // return false;
760 //}
761
762 //m_ft_types[tri_idx] = FACE;
763 //m_ft_idx[tri_idx] = 0;
764 //return true;
765
766
767
768 Point& f1 = m_tris[tri_idx][0];
769 Point& f2 = m_tris[tri_idx][1];
770 Point& f3 = m_tris[tri_idx][2];
771 Vector e1 = f2 - f1;
772 Vector e2 = f3 - f2;
773 Vector e3 = f1 - f3;
774
775 // Check vertex cones.
776 Vector v = p - f1;
777 if (v * e1 < epsilon && v * e3 > -epsilon) {
778 m_ft_types[tri_idx] = VERTEX;
779 m_ft_idx[tri_idx] = 0;
780 return false;
781 }
782 v = p - f2;
783 if (v * e2 < epsilon && v * e1 > -epsilon) {
784 m_ft_types[tri_idx] = VERTEX;
785 m_ft_idx[tri_idx] = 1;
786 return false;

Callers

nothing calls this directly

Calls 1

normalizeMethod · 0.80

Tested by

no test coverage detected