File affine_body_constitution.h
File List > constitution > affine_body_constitution.h
Go to the documentation of this file
#pragma once
#include <uipc/constitution/constitution.h>
#include <uipc/geometry/simplicial_complex.h>
namespace uipc::constitution
{
class UIPC_CONSTITUTION_API AffineBodyConstitution : public IConstitution
{
using Base = IConstitution;
public:
AffineBodyConstitution(const Json& config = default_config()) noexcept;
void apply_to(geometry::SimplicialComplex& sc, Float kappa, Float mass_density = 1e3) const;
void apply_to(geometry::SimplicialComplex& sc,
Float kappa,
const Matrix12x12& mass,
Float volume) const;
static Json default_config() noexcept;
protected:
virtual U64 get_uid() const noexcept override;
void create_abd_attributes(geometry::SimplicialComplex& sc,
Float kappa,
Float mass_density,
Float volume,
Float m,
const Vector3& m_x_bar,
const Matrix3x3& m_x_bar_x_bar) const;
private:
Json m_config;
};
} // namespace uipc::constitution