Skip to content

Commit 446d32e

Browse files
author
Teseo Schneider
committed
edge flaps and flip avoiding line search better assertions
1 parent d84905f commit 446d32e

File tree

4 files changed

+85
-120
lines changed

4 files changed

+85
-120
lines changed

attic/skip/edge_flaps.cpp

Lines changed: 0 additions & 114 deletions
This file was deleted.

src/edge_flaps.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include <common.h>
2+
#include <npe.h>
3+
#include <typedefs.h>
4+
5+
#include <igl/edge_flaps.h>
6+
7+
const char *ds_edge_flaps = R"igl_Qu8mg5v7(
8+
9+
Determine "edge flaps": two faces on either side of a unique edge (assumes edge-manifold mesh)
10+
11+
12+
Parameters
13+
----------
14+
15+
F #F by 3 list of face indices
16+
17+
Returns
18+
-------
19+
20+
E #E by 2 list of edge indices into V.
21+
EMAP #F*3 list of indices into E, mapping each directed edge to unique
22+
unique edge in E
23+
EF #E by 2 list of edge flaps, EF(e,0)=f means e=(i-->j) is the edge of
24+
F(f,:) opposite the vth corner, where EI(e,0)=v. Similarly EF(e,1) "
25+
e=(j->i)
26+
EI #E by 2 list of edge flap corners (see above).
27+
28+
See also
29+
--------
30+
31+
32+
Notes
33+
-----
34+
None
35+
36+
Examples
37+
--------
38+
39+
)igl_Qu8mg5v7";
40+
41+
npe_function(edge_flaps)
42+
npe_doc(ds_edge_flaps)
43+
44+
npe_arg(f, dense_int, dense_long, dense_longlong)
45+
46+
47+
npe_begin_code()
48+
assert_valid_tri_mesh_faces(f);
49+
50+
Eigen::MatrixXi f_copy = f.template cast<int>();
51+
Eigen::MatrixXi e_copy;
52+
Eigen::VectorXi emap_copy;
53+
Eigen::MatrixXi ef_copy;
54+
Eigen::MatrixXi ei_copy;
55+
igl::edge_flaps(f_copy, e_copy, emap_copy, ef_copy, ei_copy);
56+
57+
EigenDense<npe_Scalar_f> e = e_copy.template cast<npe_Scalar_f>();
58+
EigenDense<npe_Scalar_f> emap = emap_copy.template cast<npe_Scalar_f>();
59+
EigenDense<npe_Scalar_f> ef = ef_copy.template cast<npe_Scalar_f>();
60+
EigenDense<npe_Scalar_f> ei = ei_copy.template cast<npe_Scalar_f>();
61+
return std::make_tuple(npe::move(e), npe::move(emap), npe::move(ef), npe::move(ei));
62+
63+
npe_end_code()
64+
65+

src/flip_avoiding_line_search.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ npe_arg(cur_energy, double)
6464
npe_begin_code()
6565
assert_shapes_match(cur_v, dst_v, "cur_v", "dst_v");
6666
assert_valid_tet_or_tri_mesh_faces(f);
67+
if(f.cols() == 3)
68+
{
69+
assert_cols_equals(cur_v, 2, "cur_v");
70+
assert_cols_equals(dst_v, 2, "dst_v");
71+
}
72+
else
73+
{
74+
assert_cols_equals(cur_v, 3, "cur_v");
75+
assert_cols_equals(dst_v, 3, "dst_v");
76+
}
6777

6878
//TODO: remove __copy
6979
Eigen::MatrixXi f_copy = f.template cast<int>();

tests/test_basic.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2275,17 +2275,21 @@ def test_fast_winding_number_for_meshes(self):
22752275
pass
22762276

22772277
def test_flip_avoiding_line_search(self):
2278-
#def fun(v):
2279-
# return 0.5
2280-
#energy, vr = igl.flip_avoiding_line_search(self.f1, self.v1, -self.v1, fun, 10.0)
2278+
def fun(v):
2279+
return 0.5
2280+
energy, vr = igl.flip_avoiding_line_search(self.f1, self.v1, -self.v1, fun, 10.0)
22812281
# TODO: fix function assertion fail
22822282
pass
22832283

2284+
def test_edge_flaps(self):
2285+
# TODO
2286+
e, emap, ef, ei = igl.edge_flaps(self.f2)
2287+
pass
2288+
22842289
def test_circulation(self):
22852290
pass
2286-
# difficult data
2287-
# _, e, emap = igl.crouzeix_raviart_cotmatrix(self.v1, self.f1)
2288-
# ret = igl.circulation(0, False, emap, e, e)
2291+
# e, emap, ef, ei = igl.edge_flaps(self.f2)
2292+
# ret = igl.circulation(0, False, emap, ef, ei)
22892293
# self.assertTrue(type(ret) == list)
22902294
# self.assertTrue(type(ret[0]) == int)
22912295

0 commit comments

Comments
 (0)