tips015

形と見せ方②
— Interpolate

Curve ▸ Spline ▸ Interpolate / Nurbs Curve

Interpolate(キャンバスでの表示は IntCrv)は、渡した点をすべて通る曲線を作る。
同じ点を Nurbs Curve(表示は Nurbs)に渡すと、点は曲線を引っぱる制御点になり、両端以外は通らない。

点をつなぐ

  • Interpolate の V(Vertices)に点のリスト、D(Degree・次数)に数値をつなぐ。D をつながなければ既定の 3 が使われる
  • 距離を測る側は、同じ点のリストを Curve Closest Point(表示は Crv CP)の P(Point)に、できた曲線を C(Curve)につなぐ。点から曲線までの距離が D(Distance)に出る
①②は左の2つのパネルから出た同じ5点を使っている。右の画像は2枚とも真上から・同じ画角と同じ縮尺。クリックで拡大。

① Interpolate点 → 曲線までの距離

0, 00
10, 200
20, 00
30, 200
40, 00

② Nurbs Curve点 → 曲線までの距離

0, 00
10, 207.631814
20, 010
30, 207.631814
40, 00

①は5点とも距離が 0。曲線が点の上を通っている。
②で 0 なのは両端だけで、間の3点は曲線から離れている。

通る曲線と、引っぱる曲線

  • ② Nurbs Curve … 渡した5点が、そのまま制御点になる
  • ① Interpolate … 同じ5点を通すために、制御点を7個に作り直す(次数はどちらも 3)

次数を変えても点は通る

  • V のリストは変えずに、D1 / 3 / 5 を入れる
右のパネルが Crv CPD(Distance)、下のパネルが IntCrvL(Length)。枠の①②③が下の表の D = 1 / 3 / 5 にあたる。クリックで拡大。
D = 1L = 89.442719 / 距離は5点とも 0
D = 3L = 92.676659 / 距離は5点とも 0
D = 5L = 94.606733 / 距離は5点とも 0

D1 を入れたときだけ、点を直線でつないだ折れ線(Polyline Curve)が返る。

使いどころ

  • 測った点・拾った点をそのまま通したい = Interpolate
  • 点は形の目安でよく、なめらかさを優先したい = Nurbs Curve
  • 折れ線でつなぎたいだけなら Interpolate の D1

注意

同じ点が2回続くと、Interpolate は null を返す。警告もエラーも出ないので、下流が止まってから気づく。
点が2個だけのときは D3 を入れても直線になる(L は 40)。

P(Periodic)を True にすると、端どうしがつながった曲線(Periodic Planar Curve)になる。閉じた曲線の話は別の回に。

#ジオメトリ