Skip to content

Commit aaca2d4

Browse files
committed
Change const Eigen::Matrix& to Eigen::ConstRef<Matrix>
1 parent 9c56d11 commit aaca2d4

File tree

150 files changed

+1836
-1740
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+1836
-1740
lines changed

python/src/barrier/adaptive_stiffness.cpp

+11-9
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ void define_adaptive_stiffness(py::module_& m)
1313
"initial_barrier_stiffness",
1414
[](const double bbox_diagonal, const Barrier& barrier,
1515
const double dhat, const double average_mass,
16-
const Eigen::VectorXd& grad_energy,
17-
const Eigen::VectorXd& grad_barrier,
16+
Eigen::ConstRef<Eigen::VectorXd> grad_energy,
17+
Eigen::ConstRef<Eigen::VectorXd> grad_barrier,
1818
const double min_barrier_stiffness_scale = 1e11,
1919
const double dmin = 0) {
2020
double max_barrier_stiffness;
@@ -73,8 +73,9 @@ void define_adaptive_stiffness(py::module_& m)
7373
"semi_implicit_stiffness",
7474
static_cast<double (*)(
7575
const CollisionStencil&, const std::array<long, 4>&,
76-
const VectorMax12d&, const VectorMax4d&, const MatrixMax12d&,
77-
const double)>(&semi_implicit_stiffness),
76+
Eigen::ConstRef<VectorMax12d>, Eigen::ConstRef<VectorMax4d>,
77+
Eigen::ConstRef<MatrixMax12d>, const double)>(
78+
&semi_implicit_stiffness),
7879
R"ipc_Qu8mg5v7(
7980
Compute the semi-implicit stiffness for a single collision.
8081
@@ -97,8 +98,8 @@ void define_adaptive_stiffness(py::module_& m)
9798
m.def(
9899
"semi_implicit_stiffness",
99100
static_cast<Eigen::VectorXd (*)(
100-
const CollisionMesh&, const Eigen::MatrixXd&,
101-
const NormalCollisions&, const Eigen::VectorXd&,
101+
const CollisionMesh&, Eigen::ConstRef<Eigen::MatrixXd>,
102+
const NormalCollisions&, Eigen::ConstRef<Eigen::VectorXd>,
102103
const Eigen::SparseMatrix<double>&, const double)>(
103104
&semi_implicit_stiffness),
104105
R"ipc_Qu8mg5v7(
@@ -123,9 +124,10 @@ void define_adaptive_stiffness(py::module_& m)
123124
m.def(
124125
"semi_implicit_stiffness",
125126
static_cast<Eigen::VectorXd (*)(
126-
const CollisionMesh&, const Eigen::MatrixXd&, const Candidates&,
127-
const Eigen::VectorXd&, const Eigen::SparseMatrix<double>&,
128-
const double)>(&semi_implicit_stiffness),
127+
const CollisionMesh&, Eigen::ConstRef<Eigen::MatrixXd>,
128+
const Candidates&, Eigen::ConstRef<Eigen::VectorXd>,
129+
const Eigen::SparseMatrix<double>&, const double)>(
130+
&semi_implicit_stiffness),
129131
R"ipc_Qu8mg5v7(
130132
Compute the semi-implicit stiffness's for all collisions.
131133

python/src/broad_phase/aabb.cpp

+12-10
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ void define_aabb(py::module_& m)
1010
py::class_<AABB>(m, "AABB")
1111
.def(py::init())
1212
.def(
13-
py::init<const ArrayMax3d&, const ArrayMax3d&>(), py::arg("min"),
14-
py::arg("max"))
13+
py::init<
14+
Eigen::ConstRef<ArrayMax3d>, Eigen::ConstRef<ArrayMax3d>>(),
15+
py::arg("min"), py::arg("max"))
1516
.def(
1617
py::init<const AABB&, const AABB&>(), py::arg("aabb1"),
1718
py::arg("aabb2"))
@@ -20,7 +21,7 @@ void define_aabb(py::module_& m)
2021
py::arg("aabb2"), py::arg("aabb3"))
2122
.def_static(
2223
"from_point",
23-
py::overload_cast<const VectorMax3d&, const double>(
24+
py::overload_cast<Eigen::ConstRef<VectorMax3d>, const double>(
2425
&AABB::from_point),
2526
R"ipc_Qu8mg5v7(
2627
Construct an AABB for a static point.
@@ -36,8 +37,8 @@ void define_aabb(py::module_& m)
3637
.def_static(
3738
"from_point",
3839
py::overload_cast<
39-
const VectorMax3d&, const VectorMax3d&, const double>(
40-
&AABB::from_point),
40+
Eigen::ConstRef<VectorMax3d>, Eigen::ConstRef<VectorMax3d>,
41+
const double>(&AABB::from_point),
4142
R"ipc_Qu8mg5v7(
4243
Construct an AABB for a moving point (i.e. temporal edge).
4344
@@ -78,7 +79,8 @@ void define_aabb(py::module_& m)
7879

7980
m.def(
8081
"build_vertex_boxes",
81-
[](const Eigen::MatrixXd& vertices, const double inflation_radius = 0) {
82+
[](Eigen::ConstRef<Eigen::MatrixXd> vertices,
83+
const double inflation_radius = 0) {
8284
std::vector<AABB> vertex_boxes;
8385
build_vertex_boxes(vertices, vertex_boxes, inflation_radius);
8486
return vertex_boxes;
@@ -97,8 +99,8 @@ void define_aabb(py::module_& m)
9799

98100
m.def(
99101
"build_vertex_boxes",
100-
[](const Eigen::MatrixXd& vertices_t0,
101-
const Eigen::MatrixXd& vertices_t1,
102+
[](Eigen::ConstRef<Eigen::MatrixXd> vertices_t0,
103+
Eigen::ConstRef<Eigen::MatrixXd> vertices_t1,
102104
const double inflation_radius = 0) {
103105
std::vector<AABB> vertex_boxes;
104106
build_vertex_boxes(
@@ -122,7 +124,7 @@ void define_aabb(py::module_& m)
122124
m.def(
123125
"build_edge_boxes",
124126
[](const std::vector<AABB>& vertex_boxes,
125-
const Eigen::MatrixXi& edges) {
127+
Eigen::ConstRef<Eigen::MatrixXi> edges) {
126128
std::vector<AABB> edge_boxes;
127129
build_edge_boxes(vertex_boxes, edges, edge_boxes);
128130
return edge_boxes;
@@ -142,7 +144,7 @@ void define_aabb(py::module_& m)
142144
m.def(
143145
"build_face_boxes",
144146
[](const std::vector<AABB>& vertex_boxes,
145-
const Eigen::MatrixXi& faces) {
147+
Eigen::ConstRef<Eigen::MatrixXi> faces) {
146148
std::vector<AABB> face_boxes;
147149
build_face_boxes(vertex_boxes, faces, face_boxes);
148150
return face_boxes;

python/src/broad_phase/broad_phase.cpp

+15-11
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@ class PyBroadPhase : public BroadPhase {
1616
}
1717

1818
void build(
19-
const Eigen::MatrixXd& vertices,
20-
const Eigen::MatrixXi& edges,
21-
const Eigen::MatrixXi& faces,
19+
Eigen::ConstRef<Eigen::MatrixXd> vertices,
20+
Eigen::ConstRef<Eigen::MatrixXi> edges,
21+
Eigen::ConstRef<Eigen::MatrixXi> faces,
2222
const double inflation_radius = 0) override
2323
{
2424
PYBIND11_OVERRIDE(
2525
void, BroadPhase, build, vertices, edges, faces, inflation_radius);
2626
}
2727

2828
void build(
29-
const Eigen::MatrixXd& vertices_t0,
30-
const Eigen::MatrixXd& vertices_t1,
31-
const Eigen::MatrixXi& edges,
32-
const Eigen::MatrixXi& faces,
29+
Eigen::ConstRef<Eigen::MatrixXd> vertices_t0,
30+
Eigen::ConstRef<Eigen::MatrixXd> vertices_t1,
31+
Eigen::ConstRef<Eigen::MatrixXi> edges,
32+
Eigen::ConstRef<Eigen::MatrixXi> faces,
3333
const double inflation_radius = 0) override
3434
{
3535
PYBIND11_OVERRIDE(
@@ -149,8 +149,10 @@ void define_broad_phase(py::module_& m)
149149
.def(
150150
"build",
151151
py::overload_cast<
152-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
153-
const Eigen::MatrixXi&, const double>(&BroadPhase::build),
152+
Eigen::ConstRef<Eigen::MatrixXd>,
153+
Eigen::ConstRef<Eigen::MatrixXi>,
154+
Eigen::ConstRef<Eigen::MatrixXi>, const double>(
155+
&BroadPhase::build),
154156
R"ipc_Qu8mg5v7(
155157
Build the broad phase for static collision detection.
156158
@@ -165,8 +167,10 @@ void define_broad_phase(py::module_& m)
165167
.def(
166168
"build",
167169
py::overload_cast<
168-
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
169-
const Eigen::MatrixXi&, const Eigen::MatrixXi&, const double>(
170+
Eigen::ConstRef<Eigen::MatrixXd>,
171+
Eigen::ConstRef<Eigen::MatrixXd>,
172+
Eigen::ConstRef<Eigen::MatrixXi>,
173+
Eigen::ConstRef<Eigen::MatrixXi>, const double>(
170174
&BroadPhase::build),
171175
R"ipc_Qu8mg5v7(
172176
Build the broad phase for continuous collision detection.

python/src/broad_phase/spatial_hash.cpp

+15-9
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,36 @@ void define_spatial_hash(py::module_& m)
1212
.def(py::init())
1313
.def(
1414
py::init<
15-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
16-
const Eigen::MatrixXi&, double, double>(),
15+
Eigen::ConstRef<Eigen::MatrixXd>,
16+
Eigen::ConstRef<Eigen::MatrixXi>,
17+
Eigen::ConstRef<Eigen::MatrixXi>, double, double>(),
1718
py::arg("vertices"), py::arg("edges"), py::arg("faces"),
1819
py::arg("inflation_radius") = 0, py::arg("voxel_size") = -1)
1920
.def(
2021
py::init<
21-
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
22-
const Eigen::MatrixXi&, const Eigen::MatrixXi&, double,
23-
double>(),
22+
Eigen::ConstRef<Eigen::MatrixXd>,
23+
Eigen::ConstRef<Eigen::MatrixXd>,
24+
Eigen::ConstRef<Eigen::MatrixXi>,
25+
Eigen::ConstRef<Eigen::MatrixXi>, double, double>(),
2426
py::arg("vertices_t0"), py::arg("vertices_t1"), py::arg("edges"),
2527
py::arg("faces"), py::arg("inflation_radius") = 0,
2628
py::arg("voxel_size") = -1)
2729
.def(
2830
"build",
2931
py::overload_cast<
30-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
31-
const Eigen::MatrixXi&, double, double>(&SpatialHash::build),
32+
Eigen::ConstRef<Eigen::MatrixXd>,
33+
Eigen::ConstRef<Eigen::MatrixXi>,
34+
Eigen::ConstRef<Eigen::MatrixXi>, double, double>(
35+
&SpatialHash::build),
3236
py::arg("vertices"), py::arg("edges"), py::arg("faces"),
3337
py::arg("inflation_radius") = 0, py::arg("voxel_size") = -1)
3438
.def(
3539
"build",
3640
py::overload_cast<
37-
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
38-
const Eigen::MatrixXi&, const Eigen::MatrixXi&, double, double>(
41+
Eigen::ConstRef<Eigen::MatrixXd>,
42+
Eigen::ConstRef<Eigen::MatrixXd>,
43+
Eigen::ConstRef<Eigen::MatrixXi>,
44+
Eigen::ConstRef<Eigen::MatrixXi>, double, double>(
3945
&SpatialHash::build),
4046
py::arg("vertices_t0"), py::arg("vertices_t1"), py::arg("edges"),
4147
py::arg("faces"), py::arg("inflation_radius") = 0,

python/src/broad_phase/voxel_size_heuristic.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,24 @@ void define_voxel_size_heuristic(py::module_& m)
1010
m.def(
1111
"suggest_good_voxel_size",
1212
py::overload_cast<
13-
const Eigen::MatrixXd&, const Eigen::MatrixXi&, const double>(
14-
&suggest_good_voxel_size),
13+
Eigen::ConstRef<Eigen::MatrixXd>, Eigen::ConstRef<Eigen::MatrixXi>,
14+
const double>(&suggest_good_voxel_size),
1515
py::arg("vertices"), py::arg("edges"), py::arg("inflation_radius") = 0);
1616

1717
m.def(
1818
"suggest_good_voxel_size",
1919
py::overload_cast<
20-
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
21-
const Eigen::MatrixXi&, const double>(&suggest_good_voxel_size),
20+
Eigen::ConstRef<Eigen::MatrixXd>, Eigen::ConstRef<Eigen::MatrixXd>,
21+
Eigen::ConstRef<Eigen::MatrixXi>, const double>(
22+
&suggest_good_voxel_size),
2223
py::arg("vertices_t0"), py::arg("vertices_t1"), py::arg("edges"),
2324
py::arg("inflation_radius") = 0);
2425

2526
m.def(
2627
"mean_edge_length",
27-
[](const Eigen::MatrixXd& vertices_t0,
28-
const Eigen::MatrixXd& vertices_t1, const Eigen::MatrixXi& edges) {
28+
[](Eigen::ConstRef<Eigen::MatrixXd> vertices_t0,
29+
Eigen::ConstRef<Eigen::MatrixXd> vertices_t1,
30+
Eigen::ConstRef<Eigen::MatrixXi> edges) {
2931
double std_deviation;
3032
double r = mean_edge_length(
3133
vertices_t0, vertices_t1, edges, std_deviation);
@@ -36,7 +38,7 @@ void define_voxel_size_heuristic(py::module_& m)
3638

3739
m.def(
3840
"mean_displacement_length",
39-
[](const Eigen::MatrixXd& displacements) {
41+
[](Eigen::ConstRef<Eigen::MatrixXd> displacements) {
4042
double std_deviation;
4143
double r = mean_displacement_length(displacements, std_deviation);
4244
return std::make_tuple(r, std_deviation);

python/src/candidates/candidates.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ void define_candidates(py::module_& m)
1212
.def(
1313
"build",
1414
py::overload_cast<
15-
const CollisionMesh&, const Eigen::MatrixXd&, const double,
16-
std::shared_ptr<BroadPhase>>(&Candidates::build),
15+
const CollisionMesh&, Eigen::ConstRef<Eigen::MatrixXd>,
16+
const double, std::shared_ptr<BroadPhase>>(&Candidates::build),
1717
R"ipc_Qu8mg5v7(
1818
Initialize the set of discrete collision detection candidates.
1919
@@ -29,8 +29,8 @@ void define_candidates(py::module_& m)
2929
.def(
3030
"build",
3131
py::overload_cast<
32-
const CollisionMesh&, const Eigen::MatrixXd&,
33-
const Eigen::MatrixXd&, const double,
32+
const CollisionMesh&, Eigen::ConstRef<Eigen::MatrixXd>,
33+
Eigen::ConstRef<Eigen::MatrixXd>, const double,
3434
std::shared_ptr<BroadPhase>>(&Candidates::build),
3535
R"ipc_Qu8mg5v7(
3636
Initialize the set of continuous collision detection candidates.

python/src/candidates/collision_stencil.cpp

+22-16
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void define_collision_stencil(py::module_& m)
3737
)ipc_Qu8mg5v7",
3838
py::arg("edges"), py::arg("faces"))
3939
.def(
40-
"vertices", &CollisionStencil::vertices<double>,
40+
"vertices", &CollisionStencil::vertices,
4141
R"ipc_Qu8mg5v7(
4242
Get the vertex attributes of the collision stencil.
4343
@@ -53,7 +53,7 @@ void define_collision_stencil(py::module_& m)
5353
)ipc_Qu8mg5v7",
5454
py::arg("vertices"), py::arg("edges"), py::arg("faces"))
5555
.def(
56-
"dof", &CollisionStencil::dof<double>,
56+
"dof", &CollisionStencil::dof,
5757
R"ipc_Qu8mg5v7(
5858
Select this stencil's DOF from the full matrix of DOF.
5959
@@ -71,8 +71,9 @@ void define_collision_stencil(py::module_& m)
7171
.def(
7272
"compute_distance",
7373
py::overload_cast<
74-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
75-
const Eigen::MatrixXi&>(
74+
Eigen::ConstRef<Eigen::MatrixXd>,
75+
Eigen::ConstRef<Eigen::MatrixXi>,
76+
Eigen::ConstRef<Eigen::MatrixXi>>(
7677
&CollisionStencil::compute_distance, py::const_),
7778
R"ipc_Qu8mg5v7(
7879
Compute the distance of the stencil.
@@ -89,8 +90,9 @@ void define_collision_stencil(py::module_& m)
8990
.def(
9091
"compute_distance_gradient",
9192
py::overload_cast<
92-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
93-
const Eigen::MatrixXi&>(
93+
Eigen::ConstRef<Eigen::MatrixXd>,
94+
Eigen::ConstRef<Eigen::MatrixXi>,
95+
Eigen::ConstRef<Eigen::MatrixXi>>(
9496
&CollisionStencil::compute_distance_gradient, py::const_),
9597
R"ipc_Qu8mg5v7(
9698
Compute the distance gradient of the stencil w.r.t. the stencil's vertex positions.
@@ -107,8 +109,9 @@ void define_collision_stencil(py::module_& m)
107109
.def(
108110
"compute_distance_hessian",
109111
py::overload_cast<
110-
const Eigen::MatrixXd&, const Eigen::MatrixXi&,
111-
const Eigen::MatrixXi&>(
112+
Eigen::ConstRef<Eigen::MatrixXd>,
113+
Eigen::ConstRef<Eigen::MatrixXi>,
114+
Eigen::ConstRef<Eigen::MatrixXi>>(
112115
&CollisionStencil::compute_distance_hessian, py::const_),
113116
R"ipc_Qu8mg5v7(
114117
Compute the distance Hessian of the stencil w.r.t. the stencil's vertex positions.
@@ -124,7 +127,7 @@ void define_collision_stencil(py::module_& m)
124127
py::arg("vertices"), py::arg("edges"), py::arg("faces"))
125128
.def(
126129
"compute_distance",
127-
py::overload_cast<const VectorMax12d&>(
130+
py::overload_cast<Eigen::ConstRef<VectorMax12d>>(
128131
&CollisionStencil::compute_distance, py::const_),
129132
R"ipc_Qu8mg5v7(
130133
Compute the distance of the stencil.
@@ -141,7 +144,7 @@ void define_collision_stencil(py::module_& m)
141144
py::arg("positions"))
142145
.def(
143146
"compute_distance_gradient",
144-
py::overload_cast<const VectorMax12d&>(
147+
py::overload_cast<Eigen::ConstRef<VectorMax12d>>(
145148
&CollisionStencil::compute_distance_gradient, py::const_),
146149
R"ipc_Qu8mg5v7(
147150
Compute the distance gradient of the stencil w.r.t. the stencil's vertex positions.
@@ -158,7 +161,7 @@ void define_collision_stencil(py::module_& m)
158161
py::arg("positions"))
159162
.def(
160163
"compute_distance_hessian",
161-
py::overload_cast<const VectorMax12d&>(
164+
py::overload_cast<Eigen::ConstRef<VectorMax12d>>(
162165
&CollisionStencil::compute_distance_hessian, py::const_),
163166
R"ipc_Qu8mg5v7(
164167
Compute the distance Hessian of the stencil w.r.t. the stencil's vertex positions.
@@ -175,9 +178,11 @@ void define_collision_stencil(py::module_& m)
175178
py::arg("positions"))
176179
.def(
177180
"ccd",
178-
[](const CollisionStencil& self, const VectorMax12d& vertices_t0,
179-
const VectorMax12d& vertices_t1, const double min_distance,
180-
const double tmax, const NarrowPhaseCCD& narrow_phase_ccd) {
181+
[](const CollisionStencil& self,
182+
Eigen::ConstRef<VectorMax12d> vertices_t0,
183+
Eigen::ConstRef<VectorMax12d> vertices_t1,
184+
const double min_distance, const double tmax,
185+
const NarrowPhaseCCD& narrow_phase_ccd) {
181186
double toi;
182187
bool r = self.ccd(
183188
vertices_t0, vertices_t1, toi, min_distance, tmax,
@@ -204,8 +209,9 @@ void define_collision_stencil(py::module_& m)
204209
py::arg("narrow_phase_ccd") = DEFAULT_NARROW_PHASE_CCD)
205210
.def(
206211
"print_ccd_query",
207-
[](const CollisionStencil& self, const VectorMax12d& vertices_t0,
208-
const VectorMax12d& vertices_t1) -> void {
212+
[](const CollisionStencil& self,
213+
Eigen::ConstRef<VectorMax12d> vertices_t0,
214+
Eigen::ConstRef<VectorMax12d> vertices_t1) -> void {
209215
self.write_ccd_query(std::cout, vertices_t0, vertices_t1);
210216
},
211217
R"ipc_Qu8mg5v7(

0 commit comments

Comments
 (0)