File soft_vertex_edge_stitch.h
File List > constitution > soft_vertex_edge_stitch.h
Go to the documentation of this file
#pragma once
#include <uipc/constitution/inter_primitive_constitution.h>
#include <uipc/constitution/elastic_moduli.h>
#include <uipc/geometry/geometry.h>
#include <uipc/geometry/simplicial_complex_slot.h>
#include <uipc/common/span.h>
#include <uipc/common/unit.h>
namespace uipc::constitution
{
class UIPC_CONSTITUTION_API SoftVertexEdgeStitch final : public InterPrimitiveConstitution
{
using Base = InterPrimitiveConstitution;
public:
using SlotTuple =
std::tuple<S<geometry::SimplicialComplexSlot>, S<geometry::SimplicialComplexSlot>>;
SoftVertexEdgeStitch(const Json& config = default_config());
geometry::Geometry create_geometry(
const SlotTuple& aim_geo_slots,
const SlotTuple& rest_geo_slots,
span<const Vector2i> stitched_vert_edge_ids,
const ElasticModuli2D& moduli = ElasticModuli2D::youngs_poisson(1.0_MPa, 0.49),
Float thickness = 0.001,
Float min_separate_distance = 0.001) const;
geometry::Geometry create_geometry(
const SlotTuple& aim_geo_slots,
const SlotTuple& rest_geo_slots,
const geometry::Geometry& pair_geometry,
const ElasticModuli2D& moduli = ElasticModuli2D::youngs_poisson(1.0_MPa, 0.49),
Float thickness = 0.001,
Float min_separate_distance = 0.001) const;
static Json default_config();
private:
U64 get_uid() const noexcept override;
Json m_config;
};
} // namespace uipc::constitution