名前

CG_NurbsCurveInterpolate — 全ての与えられたデータのポイントを通る補間NURBS曲線を生成します。

概要

geometry CG_NurbsCurveInterpolate(geometry data_points, integer degree);

説明

与えられたデータのポイント全てを通るNURBS曲線を生成します。得られる曲線は確実に入力ジオメトリーの各ポイントを通ります。

パラメーター:

  • data_points - 補間用ポイントを持つLINESTRINGジオメトリー。

  • degree - NURBS曲線の次数 (通常は 2 か 3)。

Availability: 3.7.0 - SFCGAL >= 2.3.0 が必要。

このメソッドにはSFCGALバックエンドが必要です。

この関数は3次元に対応し、Z値を削除しません。

Interpolate a degree-3 NURBS curve through four 2D points.

Code
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)))
Figure
Geometry figure for visual-cg-nurbscurveinterpolate-01

Interpolate a 3D degree-3 NURBS curve through the documented control points.

Code
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)))
Figure
Geometry figure for visual-cg-nurbscurveinterpolate-02