26 :
SpatialIntegralForm(variable_to_simulations, std::move(state), std::move(diff_cache), args)
30 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
31 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
35 virtual std::string
name()
const override {
return "target"; }
37 void set_reference(
const std::shared_ptr<const State> &target_state, std::shared_ptr<const DiffCache> target_diff_cache,
const std::set<int> &reference_cached_body_ids);
61 :
SpatialIntegralForm(variable_to_simulations, std::move(state), std::move(diff_cache), args)
65 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
66 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
69 virtual std::string
name()
const override {
return "sdf-target"; }
72 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots,
const double delta);
73 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots_u,
const Eigen::VectorXd &knots_v,
const double delta);
95 :
SpatialIntegralForm(variable_to_simulations, std::move(state), std::move(diff_cache), args)
99 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
100 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
103 virtual std::string
name()
const override {
return "mesh-target"; }
117 igl::AABB<Eigen::MatrixXd, 3>
tree_;
126 NodeTargetForm(std::shared_ptr<const State> state, std::shared_ptr<const DiffCache> diff_cache,
const VariableToSimulationGroup &variable_to_simulations,
const std::vector<int> &active_nodes_,
const Eigen::MatrixXd &target_vertex_positions_);
129 std::string
name()
const override {
return "node-target"; }
146 BarycenterTargetForm(
const VariableToSimulationGroup &variable_to_simulations,
const json &args,
const std::shared_ptr<State> &state1, std::shared_ptr<const DiffCache> diff_cache1,
const std::shared_ptr<State> &state2, std::shared_ptr<const DiffCache> diff_cache2);
160 MinTargetDistForm(
const VariableToSimulationGroup &variable_to_simulations,
const std::vector<int> &steps,
const Eigen::VectorXd &target,
const json &args,
const std::shared_ptr<State> &state, std::shared_ptr<const DiffCache> diff_cache);
172 return 1. /
x.array().inverse().sum();
176 return x.array().pow(-2.0) * pow(
eval1(
x), 2);
181 assert(
x.size() ==
dim + 1);
183 for (
int d = 0; d <
dim; d++)
189 Eigen::VectorXd g = Eigen::VectorXd::Zero(
dim + 1);
190 for (
int d = 0; d <
dim; d++)
193 g(d) += tmp /
x(
dim);
203 std::vector<std::unique_ptr<StaticForm>>
objs;
Storage for additional data required by differntial code.
main class that contains the polyfem solver and all its state
A collection of VariableToSimulation.