16double newton_method_from_stack(
18 std::vector<std::array<double, 12>>& assembles,
19 std::function<Eigen::Vector3d(
const double t)> param,
20 std::function<
double(
const std::array<double, 12>&)> compute_energy,
21 std::function<
double(
const std::array<double, 12>&)> compute_jacobian,
22 std::function<
double(
const std::array<double, 12>&)> compute_hessian);
33Eigen::Vector2d newton_method_from_stack(
34 const Eigen::Vector2d& uv,
35 std::vector<std::array<double, 12>>& assembles,
36 std::function<Eigen::Vector3d(
const Eigen::Vector2d& uv)> param,
37 std::function<
double(
const std::array<double, 12>&)> compute_energy,
38 std::function<
void(
const std::array<double, 12>&, Eigen::Vector2d&)> compute_jacobian,
39 std::function<
void(
const std::array<double, 12>&, Eigen::Matrix2d&)> compute_hessian);
48Eigen::Vector3d newton_method_from_stack(
49 std::vector<std::array<double, 12>>& stack,
50 std::function<
double(
const std::array<double, 12>&)> energy,
51 std::function<
void(
const std::array<double, 12>&, Eigen::Vector3d&)> jacobian,
52 std::function<
void(
const std::array<double, 12>&, Eigen::Matrix3d&)> hessian);
54Eigen::Vector3d gradient_descent_from_stack(
55 std::vector<std::array<double, 12>>& stack,
56 std::function<
double(
const std::array<double, 12>&)> energy,
57 std::function<
void(
const std::array<double, 12>&, Eigen::Vector3d&)> jacobian);
65std::array<size_t, 4> orient_preserve_tet_reorder(
const std::array<size_t, 4>& tetra,
size_t v0);
68Eigen::Vector3d try_project(
69 const Eigen::Vector3d& point,
70 const std::vector<std::array<double, 9>>& assembled_neighbor);