26 :
SpatialIntegralForm(variable_to_simulations, std::move(varform), 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 varform::DifferentiableVarForm> &target_varform, std::shared_ptr<const DiffCache> target_diff_cache,
const std::set<int> &reference_cached_body_ids);
63 :
SpatialIntegralForm(variable_to_simulations, std::move(varform), std::move(diff_cache), args)
67 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
68 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
71 virtual std::string
name()
const override {
return "sdf-target"; }
74 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots,
const double delta);
75 void set_bspline_target(
const Eigen::MatrixXd &control_points,
const Eigen::VectorXd &knots_u,
const Eigen::VectorXd &knots_v,
const double delta);
97 :
SpatialIntegralForm(variable_to_simulations, std::move(varform), std::move(diff_cache), args)
101 auto tmp_ids = args[
"surface_selection"].get<std::vector<int>>();
102 ids_ = std::set(tmp_ids.begin(), tmp_ids.end());
105 virtual std::string
name()
const override {
return "mesh-target"; }
119 igl::AABB<Eigen::MatrixXd, 3>
tree_;
128 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_);
131 std::string
name()
const override {
return "node-target"; }
138 std::shared_ptr<const varform::DifferentiableVarForm>
varform_;
148 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);
162 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);
174 return 1. /
x.array().inverse().sum();
178 return x.array().pow(-2.0) * pow(
eval1(
x), 2);
183 assert(
x.size() ==
dim + 1);
185 for (
int d = 0; d <
dim; d++)
191 Eigen::VectorXd g = Eigen::VectorXd::Zero(
dim + 1);
192 for (
int d = 0; d <
dim; d++)
195 g(d) += tmp /
x(
dim);
205 std::vector<std::unique_ptr<StaticForm>>
objs;
Storage for additional data required by differntial code.