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

Function compute_min_angles

tools/Wires/Attributes/WireVertexMinAngleAttribute.cpp:46–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45 template<typename T>
46 void compute_min_angles(const WireNetwork& network, MatrixFr& values,
47 T& angle) {
48 const size_t num_vertices = network.get_num_vertices();
49
50 // By default, min angle is the max angle possible: 180 degrees.
51 values = MatrixFr::Ones(num_vertices, 1) * M_PI;
52 const MatrixFr& vertices = network.get_vertices();
53 for (size_t i=0; i<num_vertices; i++) {
54 const VectorF& v = vertices.row(i);
55 VectorI neighbors = network.get_vertex_neighbors(i);
56
57 const size_t valance = neighbors.size();
58 for (size_t j=0; j<valance; j++) {
59 VectorF ej = vertices.row(neighbors[j]) - v.transpose();
60 for (size_t k=j+1; k<valance; k++) {
61 VectorF ek = vertices.row(neighbors[k]) - v.transpose();
62 values.coeffRef(i,0) =
63 std::min(values.coeffRef(i,0), angle(ej, ek));
64 }
65 }
66 }
67 }
68}
69
70using namespace WireVertexMinAngleAttributeHelper;

Callers 1

computeMethod · 0.85

Calls 5

angleFunction · 0.50
get_num_verticesMethod · 0.45
get_verticesMethod · 0.45
get_vertex_neighborsMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected