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.
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)))
Interpolate a 3D degree-3 NURBS curve through the documented control points.
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)))