27 std::shared_ptr<const varform::DifferentiableVarForm> varform,
28 std::shared_ptr<const DiffCache> diff_cache,
35 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
36 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
40 virtual std::string
name()
const override {
return "target"; }
42 void set_reference(
const std::shared_ptr<const varform::DifferentiableVarForm> &target_varform, std::shared_ptr<const DiffCache> target_diff_cache,
const std::set<int> &reference_cached_body_ids);
69 :
SpatialIntegralForm(variable_to_simulations, std::move(varform), std::move(diff_cache), args)
73 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
74 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
77 virtual std::string
name()
const override {
return "sdf-target"; }
80 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots,
const double delta);
81 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots_u,
const Eigen::VectorXd &knots_v,
const double delta);
103 :
SpatialIntegralForm(variable_to_simulations, std::move(varform), std::move(diff_cache), args)
107 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
108 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
111 virtual std::string
name()
const override {
return "mesh-target"; }
125 igl::AABB<Eigen::MatrixXd, 3>
tree_;
134 NodeTargetForm(std::shared_ptr<const varform::DifferentiableVarForm> varform, std::shared_ptr<const DiffCache> diff_cache,
const VariableToSimulationGroup &variable_to_simulations,
const std::vector<int> &active_nodes_,
const Eigen::MatrixXd &target_vertex_positions_);
137 std::string
name()
const override {
return "node-target"; }
144 std::shared_ptr<const varform::DifferentiableVarForm>
varform_;
154 BarycenterTargetForm(
const VariableToSimulationGroup &variable_to_simulations,
const json &args,
const std::shared_ptr<varform::DifferentiableVarForm> &varform1, std::shared_ptr<const DiffCache> diff_cache1,
const std::shared_ptr<varform::DifferentiableVarForm> &varform2, std::shared_ptr<const DiffCache> diff_cache2);
168 MinTargetDistForm(
const VariableToSimulationGroup &variable_to_simulations,
const std::vector<int> &steps,
const Eigen::VectorXd &target,
const json &args,
const std::shared_ptr<varform::DifferentiableVarForm> &varform, std::shared_ptr<const DiffCache> diff_cache);
180 return 1. /
x.array().inverse().sum();
184 return x.array().pow(-2.0) * pow(
eval1(
x), 2);
189 assert(
x.size() ==
dim + 1);
191 for (
int d = 0; d <
dim; d++)
197 Eigen::VectorXd g = Eigen::VectorXd::Zero(
dim + 1);
198 for (
int d = 0; d <
dim; d++)
201 g(d) += tmp /
x(
dim);
211 std::vector<std::unique_ptr<StaticForm>>
objs;
Storage for additional data required by differntial code.
Read-only interface to a hierarchical collection of simulation resources.