CG_NurbsCurveInterpolate — Skapar en interpolerande NURBS-kurva som passerar genom alla angivna datapunkter
geometry CG_NurbsCurveInterpolate(geometry data_points, integer degree);
Skapar en NURBS-kurva som interpolerar genom alla angivna datapunkter. Den resulterande kurvan passerar exakt genom varje punkt i indatageometrin.
Parametrar:
data_points – en LINESTRING-geometri som innehåller punkterna att interpolera genom.
degree – polynomgrad för NURBS-kurvan (vanligen 2 eller 3).
Tillgänglighet: 3.7.0 – kräver SFCGAL >= 2.3.0.
Denna metod behöver SFCGAL-backend.
Denna funktion stöder 3d och kommer inte att tappa z-index.
Interpolera en NURBS-kurva av grad 3 genom fyra 2D-punkter.
WITH data AS (
SELECT 'LINESTRING(0 0,2 5,5 3,8 1)'::geometry AS input_points
)
SELECT input_points AS input_points,
CG_NurbsCurveInterpolate(input_points, 3) AS interpolated_curve
FROM data;
LINESTRING(0 0,2 5,5 3,8 1) | NURBSCURVE(DEGREE 3, CONTROLPOINTS(NURBSPOINT(WEIGHTEDPOINT(0 0),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(-0.43 10.29),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(4.95 1.9),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(8 1),WEIGHT 1)),KNOTS (KNOT(0,4), KNOT(1,4)))
Interpolera en 3D-NURBS-kurva av grad 3 genom de dokumenterade kontrollpunkterna.
WITH data AS (
SELECT 'LINESTRING Z (0 0 0,2 5 2,5 3 1,8 1 0)'::geometry AS input_points
)
SELECT input_points AS input_points,
CG_NurbsCurveInterpolate(input_points, 3) AS interpolated_curve
FROM data;
LINESTRING Z (0 0 0,2 5 2,5 3 1,8 1 0) | NURBSCURVE Z (DEGREE 3,CONTROLPOINTS Z (NURBSPOINT(WEIGHTEDPOINT Z (0 0 0),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT Z (-0.43 10.29 4.36),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT Z (4.95 1.9 0.54),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT Z (8 1 0),WEIGHT 1)),KNOTS (KNOT(0,4), KNOT(1,4)))