Skip to content

Commit a41a5a3

Browse files
committed
Fixed explicit optimization for refactor
1 parent ab0231d commit a41a5a3

File tree

5 files changed

+393
-386
lines changed

5 files changed

+393
-386
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ if(RENDER_TEXTURE)
7777
igl::core
7878
igl::glfw
7979
igl::png
80+
igl::embree
8081
plot
8182
)
8283
endif()

src/optimization/cone_metric.hh

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,46 @@ public:
1919
int num_flips() { return m_flip_seq.size(); };
2020
const std::vector<int>& get_flip_sequence() const { return m_flip_seq; }
2121

22+
// Metric access methods: need to access metric coordinates and corner angles
2223
virtual VectorX get_metric_coordinates() const;
2324
virtual VectorX get_reduced_metric_coordinates() const = 0;
2425
virtual void get_corner_angles(VectorX& he2angle, VectorX& he2cot) const;
2526

26-
MatrixX change_metric_to_reduced_coordinates(
27-
const std::vector<int>& I,
28-
const std::vector<int>& J,
29-
const std::vector<Scalar>& V,
30-
int num_rows) const;
31-
32-
MatrixX change_metric_to_reduced_coordinates(const MatrixX& halfedge_jacobian) const;
33-
34-
virtual ~DifferentiableConeMetric() = default;
35-
27+
// Flip method: need to be able to flip metric
3628
virtual bool flip_ccw(int _h, bool Ptolemy = true);
3729

30+
// Metric change methods: need to be able to clone metric and change metric coordinates
3831
virtual std::unique_ptr<DifferentiableConeMetric> clone_cone_metric() const = 0;
3932
virtual std::unique_ptr<DifferentiableConeMetric> set_metric_coordinates(
4033
const VectorX& metric_coords) const = 0;
4134
virtual std::unique_ptr<DifferentiableConeMetric> scale_conformally(const VectorX& u) const = 0;
4235

43-
virtual void make_discrete_metric() = 0;
44-
virtual std::unique_ptr<DifferentiableConeMetric> project_to_constraint(
45-
SolveStats<Scalar>& solve_stats,
46-
std::shared_ptr<ProjectionParameters> proj_params = nullptr) const = 0;
47-
std::unique_ptr<DifferentiableConeMetric> project_to_constraint(
48-
std::shared_ptr<ProjectionParameters> proj_params = nullptr) const;
36+
// Constraint methods: need to have a differentiable constraint and method to project to it
4937
virtual bool constraint(
5038
VectorX& constraint,
5139
MatrixX& J_constraint,
5240
bool need_jacobian = true,
5341
bool only_free_vertices = true) const;
42+
virtual std::unique_ptr<DifferentiableConeMetric> project_to_constraint(
43+
SolveStats<Scalar>& solve_stats,
44+
std::shared_ptr<ProjectionParameters> proj_params = nullptr) const = 0;
45+
std::unique_ptr<DifferentiableConeMetric> project_to_constraint(
46+
std::shared_ptr<ProjectionParameters> proj_params = nullptr) const;
5447

48+
// Discrete metric methods: need differentiable method to flip to a discrete metric
49+
virtual void make_discrete_metric() = 0;
5550
virtual MatrixX get_transition_jacobian() const = 0;
5651

52+
MatrixX change_metric_to_reduced_coordinates(
53+
const std::vector<int>& I,
54+
const std::vector<int>& J,
55+
const std::vector<Scalar>& V,
56+
int num_rows) const;
57+
58+
MatrixX change_metric_to_reduced_coordinates(const MatrixX& halfedge_jacobian) const;
59+
60+
virtual ~DifferentiableConeMetric() = default;
61+
5762
protected:
5863
bool m_is_discrete_metric;
5964
std::vector<int> m_flip_seq;

0 commit comments

Comments
 (0)