Namn

CG_NurbsCurveInterpolate — Skapar en interpolerande NURBS-kurva som passerar genom alla angivna datapunkter

Synopsis

geometry CG_NurbsCurveInterpolate(geometry data_points, integer degree);

Beskrivning

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.

Exempel

Interpolera en NURBS-kurva av grad 3 genom fyra 2D-punkter.

Kod
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;
Utdata
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)))
Figur
Geometry figure for visual-cg-nurbscurveinterpolate-01

Interpolera en 3D-NURBS-kurva av grad 3 genom de dokumenterade kontrollpunkterna.

Kod
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;
Utdata
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)))
Figur
Geometry figure for visual-cg-nurbscurveinterpolate-02