7    template<
typename Real>
 
   34    template<
typename Real>
 
   74            if (q > 1.0f) 
return 0.0f;
 
   77                const Real hh = h * h;
 
   78                return 15.0f / ((
Real)
M_PI * hh * h) * d * d * d * scale;
 
 
   85            if (q > 1.0f) 
return 0.0;
 
   89                const Real hh = h * h;
 
   90                return -45.0f / ((
Real)
M_PI * hh*hh) *d*d * scale;
 
 
   97            if (q > 1.0f) 
return 0.0f;
 
   99                const Real qq = q * q;
 
  100                const Real hh = h * h;
 
  101                return -15.0f / ((
Real)
M_PI * hh) * (q - 
Real(1.5) * qq + q * qq - 
Real(0.25) * qq * qq - 
Real(0.25)) * scale;
 
 
 
  106    template<
typename Real>
 
  125            return Real(1) * scale;
 
 
  130            return Real(0) * scale;
 
 
  135            return Real(0) * scale;
 
 
 
  141    template<
typename Real>
 
  173            const Real q = r / h;
 
  174            if (q > 1.0f) 
return 0.0f;
 
  176                return scale * (1.0f - q * q);
 
 
  182            const Real q = r / h;
 
  185                const Real hh = h * h;
 
  187                const Real alpha = 1.0f;
 
  188                return -alpha * dd* scale;
 
 
  195            const Real q = r / h;
 
  198                const Real hh = h * h;
 
  199                return 1.0 / (hh * h) * (
Real(2) / 3 - q + q * q / 
Real(3));
 
 
 
  206    template<
typename Real>
 
  230            const Real q = r / h;
 
  232            return q*q*q*kernSmooth.
Weight(r, h) * scale;
 
 
  237            const Real q = r / h;
 
  239            return q*q*kernSmooth.
Weight(r, h)/h * scale;
 
 
  244            const Real q = r / h;
 
  246            return q*kernSmooth.
Weight(r, h) / (h*h) * scale;
 
 
 
  251    template<
typename Real>
 
  273            const Real q = 2.0f*r / h;
 
  275            const Real alpha = 3.0f / (2.0f * (
Real)
M_PI * hh * h) * scale;
 
  277            if (q > 2.0f) 
return 0.0f;
 
  281                const Real d = 2.0f - q;
 
  282                return alpha / 6.0f*d*d*d;
 
  288                const Real qqq = qq*q;
 
  289                return alpha*(2.0f / 3.0f - qq + 0.5f*qqq);
 
 
  296            const Real q = 2.0f*r / h;
 
  298            const Real alpha = 3.0f / (2.0f * (
Real)
M_PI * hh * h) * scale;
 
  300            if (q > 2.0f) 
return Real(0);
 
  304                const Real d = 2.0f - q;
 
  305                return -0.5f*alpha*d*d;
 
  311                return alpha*(-2.0f*q + 1.5f*qq);
 
 
 
  317    template<
typename Real>
 
  338            const Real q = 2.5f*r / h;
 
  339            if (q > 2.5) 
return 0.0f;
 
  342                const Real d = 2.5f - q;
 
  344                return 0.0255f*dd*dd / hh * scale;
 
  348                const Real d = 2.5f - q;
 
  349                const Real t = 1.5f - q;
 
  352                return 0.0255f*(dd*dd - 5.0f*
tt*
tt) / hh * scale;
 
  356                const Real d = 2.5f - q;
 
  357                const Real t = 1.5f - q;
 
  358                const Real w = 0.5f - q;
 
  362                return 0.0255f*(dd*dd - 5.0f*
tt*
tt + 10.0f*ww*ww) / hh * scale;
 
 
  369            const Real q = 2.5f*r / h;
 
  370            if (q > 2.5) 
return 0.0f;
 
  374                const Real d = 2.5f - q;
 
  375                return -0.102f*d*d*d / hh * scale;
 
  379                const Real d = 2.5f - q;
 
  380                const Real t = 1.5f - q;
 
  381                return -0.102f*(d*d*d - 5.0f*t*t*t) / hh * scale;
 
  385                const Real d = 2.5f - q;
 
  386                const Real t = 1.5f - q;
 
  387                const Real w = 0.5f - q;
 
  388                return -0.102f*(d*d*d - 5.0f*t*t*t + 10.0f*w*w*w) / hh * scale;
 
 
 
  393    template<
typename Real>
 
  412            const float q = r / h;
 
  413            if (q > 1.0f) 
return 0.0f;
 
  415                const float d = 1.0f - q;
 
  416                const float hh = h * h;
 
  417                return (1.0 - glm::pow(q, 4.0f)) * scale;
 
 
  424            const float q = r / h;
 
  427                return scale * w / (0.4f * h);
 
  429            return scale * w / r;
 
 
  435            const float q = r / h;
 
  438                return scale * w / (0.16f * h * h);
 
  440            return scale * w / r / r;
 
 
 
  445    template<
typename Real>
 
  465            const float q = r / h;
 
  466            if (q > 1.0f) 
return 0.0f;
 
  469                return alpha * glm::pow(p, 4.0) * (1 + 4 * q) * scale;
 
 
  476            const float q = r / h;
 
  477            if (q > 1.0f) 
return 0.0f;
 
  480                Real p3 = glm::pow(p, 3.0);
 
  481                return scale * 4 * alpha * (p * p3 - p3 * (1 + 4 * q));
 
 
 
  489    template<
typename Real>
 
  513            const Real q = r / h;
 
  514            if (q > 1.0f) 
return 0.0f;
 
  518                return (1.0 - glm::pow(q, 4.0f));
 
 
  525            const float q = r / h;
 
  528                return w / (0.4f * h);
 
 
  536            const float q = r / h;
 
  539                return w / (0.16f * h * h);
 
 
 
DYN_FUNC ~ConstantKernel()
 
DYN_FUNC ConstantKernel()
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real weightRR(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
DYN_FUNC ~CorrectedKernel()
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
DYN_FUNC CorrectedKernel()
 
static DYN_FUNC Real weightRR(const Real r, const Real h, Real scale)
 
DYN_FUNC Real WeightRR(const Real r, const Real h)
 
static DYN_FUNC Real weightRR(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
DYN_FUNC CorrectedMPSKernel()
 
DYN_FUNC ~CorrectedMPSKernel()
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
DYN_FUNC Real WeightRR(const Real r, const Real h)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
DYN_FUNC CorrectedQuaticKernel()
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real weightRR(const float r, const float h, Real scale)
 
DYN_FUNC ~CorrectedQuaticKernel()
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
static DYN_FUNC Real gradient(const float r, const float h, Real scale)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
virtual DYN_FUNC Real integral(const Real r, const Real h)
 
virtual DYN_FUNC Real Gradient(const Real r, const Real h)
 
virtual DYN_FUNC Real Weight(const Real r, const Real h)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
DYN_FUNC ~QuarticKernel()
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
static DYN_FUNC Real gradient(const Real r, const Real h, const Real scale)
 
static DYN_FUNC Real weight(const Real r, const Real h, const Real scale)
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
static DYN_FUNC Real integral(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
static DYN_FUNC Real integral(const Real r, const Real h, Real scale)
 
DYN_FUNC Real integral(const Real r, const Real h) override
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
static DYN_FUNC Real gradient(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
static DYN_FUNC Real weight(const Real r, const Real h, Real scale)
 
DYN_FUNC Real Gradient(const Real r, const Real h) override
 
DYN_FUNC ~WendlandC2Kernel()
 
DYN_FUNC WendlandC2Kernel()
 
static DYN_FUNC Real gradient(const float r, const float h, Real scale)
 
DYN_FUNC Real Weight(const Real r, const Real h) override
 
This is an implementation of AdditiveCCD based on peridyno.