LCOV - code coverage report
Current view: top level - globalscripts - interpolation.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 7 0.0 %
Date: 2023-04-02 12:52:40 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /**
       2             :  * Interpolates the value of a point that is located between four known equidistant points with given values by
       3             :  * constructing a polynomial of degree three that goes through all points.
       4             :  * Computes a cardinal or Catmull-Rom spline.
       5             :  *
       6             :  * @param {number} tension - determines how sharply the curve bends at the given points.
       7             :  * @param {number} x - Location of the point to interpolate, relative to p1
       8             :  */
       9             : function cubicInterpolation(tension, x, p0, p1, p2, p3)
      10             : {
      11           0 :         let P = -tension * p0 + (2 - tension) * p1 + (tension - 2) * p2 + tension * p3;
      12           0 :         let Q = 2 * tension * p0 + (tension - 3) * p1 + (3 - 2 * tension) * p2 - tension * p3;
      13           0 :         let R = -tension * p0 + tension * p2;
      14           0 :         let S = p1;
      15             : 
      16           0 :         return ((P * x + Q) * x + R) * x + S;
      17             : }
      18             : 
      19             : /**
      20             :  * Two dimensional interpolation within a square grid using a polynomial of degree three.
      21             :  *
      22             :  * @param {Vector2D} position - Location of the point to interpolate, relative to p11
      23             :  */
      24             : function bicubicInterpolation
      25             : (
      26             :         position,
      27             :         p00, p01, p02, p03,
      28             :         p10, p11, p12, p13,
      29             :         p20, p21, p22, p23,
      30             :         p30, p31, p32, p33
      31             : )
      32             : {
      33           0 :         let tension = 0.5;
      34           0 :         return cubicInterpolation(
      35             :                 tension,
      36             :                 position.x,
      37             :                 cubicInterpolation(tension, position.y, p00, p01, p02, p03),
      38             :                 cubicInterpolation(tension, position.y, p10, p11, p12, p13),
      39             :                 cubicInterpolation(tension, position.y, p20, p21, p22, p23),
      40             :                 cubicInterpolation(tension, position.y, p30, p31, p32, p33));
      41             : }

Generated by: LCOV version 1.14