@@ -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+
5762protected:
5863 bool m_is_discrete_metric;
5964 std::vector<int > m_flip_seq;
0 commit comments