Skip to content

Commit 3e83d7e

Browse files
author
Teseo Schneider
committed
sharp_edges
1 parent 43ca82a commit 3e83d7e

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

src/sharp_edges.cpp

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include <npe.h>
2+
#include <common.h>
3+
#include <typedefs.h>
4+
5+
6+
#include <igl/sharp_edges.h>
7+
8+
const char *ds_sharp_edges = R"igl_Qu8mg5v7xxxx(
9+
SHARP_EDGES Given a mesh, compute sharp edges.
10+
11+
Parameters
12+
----------
13+
V #V by 3 list of vertex positions
14+
F #F by 3 list of triangle mesh indices into V
15+
angle dihedral angle considered to sharp (e.g., igl::PI * 0.11)
16+
17+
Returns
18+
-------
19+
SE #SE by 2 list of edge indices into V
20+
uE #uE by 2 list of unique undirected edges
21+
EMAP #F*3 list of indices into uE, mapping each directed edge to unique
22+
undirected edge so that uE(EMAP(f+#F*c)) is the unique edge
23+
corresponding to E.row(f+#F*c)
24+
uE2E #uE list of lists of indices into E of coexisting edges, so that
25+
E.row(uE2E[i][j]) corresponds to uE.row(i) for all j in
26+
0..uE2E[i].size()-1.
27+
sharp #SE list of indices into uE revealing sharp undirected edges
28+
29+
See also
30+
--------
31+
32+
33+
Notes
34+
-----
35+
None
36+
37+
Examples
38+
--------
39+
40+
)igl_Qu8mg5v7xxxx";
41+
42+
npe_function(sharp_edges)
43+
npe_doc(ds_sharp_edges)
44+
45+
npe_arg(v, dense_float, dense_double)
46+
npe_arg(f, dense_int, dense_long, dense_longlong)
47+
npe_arg(angle, double)
48+
49+
50+
npe_begin_code()
51+
assert_valid_3d_tri_mesh(v, f);
52+
53+
// Eigen::MatrixXd v_copy = v.template cast<double>();
54+
// Eigen::MatrixXi e_copy = e.template cast<int>();
55+
// Eigen::MatrixXd s_copy;
56+
57+
EigenDense<npe_Scalar_f> se;
58+
EigenDense<npe_Scalar_f> e;
59+
EigenDense<npe_Scalar_f> ue;
60+
EigenDense<npe_Scalar_f> emap;
61+
std::vector<std::vector<typename EigenDenseInt::Scalar>> u_e2_e;
62+
std::vector<typename EigenDenseInt::Scalar> sharp;
63+
igl::sharp_edges(v, f, angle, se, e, ue, emap, u_e2_e, sharp);
64+
return std::make_tuple(npe::move(se), npe::move(e), npe::move(ue), npe::move(emap), u_e2_e, sharp);
65+
66+
npe_end_code()

0 commit comments

Comments
 (0)