名前

CG_NurbsCurveDerivative — 与えたパラメーターの NURBS 曲線の導関数 (正接、曲率) を計算します。

概要

geometry CG_NurbsCurveDerivative(geometry nurbscurve, float8 parameter, integer derivative_order);

説明

指定したパラメーター値の NURBS 曲線の導関数を計算します。導関数は指定したポイントの変化率を表現します:

  • 1階: 正接ベクトル (方向と速度)

  • 2階: 曲率ベクトル (正接の変化)

  • 3階: 3階の導関数 (対応する最大階数)

パラメーター:

  • nurbscurve - NURBS 曲線ジオメトリー。

  • parameter - 評価用パラメーター値 (通常は 0.0から 1.0)。

  • derivative_order - 導関数計算の階数(1、2、3).

指定したパラメーターにおける導関数ベクトルを表現する POINT ジオメトリーを返します。

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

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

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

一階導関数で指定したパラメーターにおける正接を得る。

コード
WITH data AS (
  SELECT 'NURBSCURVE (2, (0.00 0.00, 5.00 10.00, 10.00 0.00))'::geometry AS input_curve
)
SELECT input_curve AS input_curve,
       CG_NurbsCurveDerivative(input_curve, 0.5, 1) AS tangent
FROM data;
出力
NURBSCURVE(DEGREE 2, CONTROLPOINTS(NURBSPOINT(WEIGHTEDPOINT(0 0),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(5 10),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(10 0),WEIGHT 1)),KNOTS (KNOT(0,3), KNOT(1,3))) | POINT Z (10 0 0)
Geometry figure for visual-cg-nurbscurvederivative-01

二階導関数で高次曲線の曲率の変化を得る。

コード
WITH data AS (
  SELECT 'NURBSCURVE (3, (0.00 0.00, 2.00 8.00, 5.00 5.00, 8.00 2.00, 10.00 0.00))'::geometry AS input_curve
)
SELECT input_curve AS input_curve,
       CG_NurbsCurveDerivative(input_curve, 0.5, 2) AS curvature
FROM data;
出力
NURBSCURVE(DEGREE 3, CONTROLPOINTS(NURBSPOINT(WEIGHTEDPOINT(0 0),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(2 8),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(5 5),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(8 2),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT(10 0),WEIGHT 1)),KNOTS (KNOT(0,4), KNOT(0.5,1), KNOT(1,4))) | POINT Z (9 -9 0)
Geometry figure for visual-cg-nurbscurvederivative-02

同じ導関数を 3次元 NURBS 曲線にも適用できます。

コード
WITH data AS (
  SELECT 'NURBSCURVE Z (2, (0.00 0.00 0.00, 5.00 10.00 5.00, 10.00 0.00 0.00))'::geometry AS input_curve
)
SELECT input_curve AS input_curve,
       CG_NurbsCurveDerivative(input_curve, 0.5, 1) AS tangent
FROM data;
出力
NURBSCURVE Z (DEGREE 2,CONTROLPOINTS Z (NURBSPOINT(WEIGHTEDPOINT Z (0 0 0),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT Z (5 10 5),WEIGHT 1), NURBSPOINT(WEIGHTEDPOINT Z (10 0 0),WEIGHT 1)),KNOTS (KNOT(0,3), KNOT(1,3))) | POINT Z (10 0 0)
Geometry figure for visual-cg-nurbscurvederivative-03