16 static constexpr bool kEvaluateGradient =
false;
18 static const KERNEL_FUNCTION_TYPE Type = NON_HOMOGENEOUS;
19 static const unsigned int NCMP = 1;
20 static const unsigned int NPV = 1;
21 static const unsigned int NPOT = 1;
22 static const unsigned int NRHS = 1;
23 static const unsigned int NLHS = 1;
28 int getPosition(
const unsigned int)
const {
return 0; }
30 double getMutualCoefficient()
const {
36 double evaluate(
double xt,
double yt,
double zt,
double xs,
double ys,
double zs)
const {
39 return rbf_->evaluate_isotropic(diff);
43 void evaluateBlockAndDerivative(
double xt,
double yt,
double zt,
double xs,
double ys,
double zs,
44 double block[1],
double blockDerivative[3])
const {
47 block[0] = rbf_->evaluate_isotropic(diff);
49 if (kEvaluateGradient) {
50 auto grad = rbf_->evaluate_gradient_isotropic(diff);
51 blockDerivative[0] = grad(0);
52 blockDerivative[1] = grad(1);
53 blockDerivative[2] = grad(2);
55 blockDerivative[0] = 0.0;
56 blockDerivative[1] = 0.0;
57 blockDerivative[2] = 0.0;
61 double getScaleFactor(
const double,
const int)
const override {
66 double getScaleFactor(
const double)
const override {
71 double evaluate(
const FPoint<double>& pt,
const FPoint<double>& ps)
const {
72 return evaluate(pt.getX(), pt.getY(), pt.getZ(), ps.getX(), ps.getY(), ps.getZ());
76 const std::unique_ptr<rbf::rbf_base> rbf_;