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)に出る
① Interpolate点 → 曲線までの距離
| 0, 0 | 0 |
|---|---|
| 10, 20 | 0 |
| 20, 0 | 0 |
| 30, 20 | 0 |
| 40, 0 | 0 |
② Nurbs Curve点 → 曲線までの距離
| 0, 0 | 0 |
|---|---|
| 10, 20 | 7.631814 |
| 20, 0 | 10 |
| 30, 20 | 7.631814 |
| 40, 0 | 0 |
①は5点とも距離が 0。曲線が点の上を通っている。
②で 0 なのは両端だけで、間の3点は曲線から離れている。
通る曲線と、引っぱる曲線
- ② Nurbs Curve … 渡した5点が、そのまま制御点になる
- ① Interpolate … 同じ5点を通すために、制御点を7個に作り直す(次数はどちらも 3)
次数を変えても点は通る
Vのリストは変えずに、Dに1/3/5を入れる
Crv CP の D(Distance)、下のパネルが IntCrv の L(Length)。枠の①②③が下の表の D = 1 / 3 / 5 にあたる。クリックで拡大。D = 1 | L = 89.442719 / 距離は5点とも 0 |
|---|---|
D = 3 | L = 92.676659 / 距離は5点とも 0 |
D = 5 | L = 94.606733 / 距離は5点とも 0 |
D に 1 を入れたときだけ、点を直線でつないだ折れ線(Polyline Curve)が返る。
使いどころ
- 測った点・拾った点をそのまま通したい = Interpolate
- 点は形の目安でよく、なめらかさを優先したい = Nurbs Curve
- 折れ線でつなぎたいだけなら Interpolate の
Dに1
注意
同じ点が2回続くと、Interpolate は null を返す。警告もエラーも出ないので、下流が止まってから気づく。
点が2個だけのときは D に 3 を入れても直線になる(L は 40)。
P(Periodic)を True にすると、端どうしがつながった曲線(Periodic Planar Curve)になる。閉じた曲線の話は別の回に。