| 37 | } |
| 38 | |
| 39 | Vector2I get_opposite_edge(const Vector3I& f, size_t v) { |
| 40 | if (f[0] == v) { |
| 41 | return Vector2I(f[1], f[2]); |
| 42 | } else if (f[1] == v) { |
| 43 | return Vector2I(f[2], f[0]); |
| 44 | } else if (f[2] == v) { |
| 45 | return Vector2I(f[0], f[1]); |
| 46 | } else { |
| 47 | std::stringstream err_msg; |
| 48 | err_msg << "Vertex " << v << " does not belong to triangle (" |
| 49 | << f.transpose() << ")"; |
| 50 | throw RuntimeError(err_msg.str()); |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | size_t get_opposite_vertex(const Vector3I& f, const Vector2I& e) { |
| 55 | if (f[0] != e[0] && f[0] != e[1]) return f[0]; |
no test coverage detected