名前

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値を削除しません。

四つの二次元ポイントを通る次数 3の NURBS 曲線の補間。

コード
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)))
Geometry figure for visual-cg-nurbscurveinterpolate-01

クエリーで示している制御点を通る次数 3の三次元 NURBS 曲線の補間。

コード
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)))
Geometry figure for visual-cg-nurbscurveinterpolate-02