Shade3D 公式

10 曲線の接線ベクトル [ Shade Labo ]


#1

関連記事
  • 06 Bezier line 基礎
  • 07 Bezier line 長さ
  • 09 Bezier line 接線ベクトル

10 - 1 弧長パラメータ


曲線における接線ベクトルとは、幾何数学では暗黙の了解事項として、

弧長( 曲線の長さ )をパラメータとした関数 F(s)で表された曲線の 弧長 s による導関数 dF/ds で表される単位ベクトル

のことをいいます。( dF/ds はその定義から必ず単位ベクトルになります )

このパラメータを弧長パラメータ と呼びます。


3D等 の専門書の多くでは、bezier parameter t を用いた dP/dt にしか興味は無く、接線ベクトル という言葉を dP/ds ではなく、dP/dt の意味で使用しています。

分野が違えば使用する言葉の意味も違ってくる わけです


#2

10 - 2 bezier 曲線を 弧長パラメータ で記述


bezier 曲線を与える parameter は bezier parameter t 一つに限るわけでなく、例えば a = t**2 なる a ( a : 0~1 )を parameter としても表現でき、一般に一つの曲線を記述する parameter の種類は無数に存在します。

曲線 F を記述する parameter t に課せられるのは次の条件のみです。

parameter を大きくすれば、必ず曲線上の一方向に進み、止まったり、逆向きに進むことはない     [ 条件 10 - 1 ]




ここで bezier 曲線に弧長パラメータを適用してみます。


bezier 曲線の長さを求める方法は [ 式 07 - 1 ] で示しました。

bezier 曲線 P( t ) の bezier parameter t1 ~ t2 における長さ L は、

          [ 式 07 - 1 ]


一般に曲線を記述するパラメータに付加される [ 条件 10 - 1 ] より、

          [ 式 10 - 1 ]


弧長パラメータ s を bezier parameter t によって表すと、

          [ 式 10 - 2 ]
          [ 式 10 - 3 ]


s = s( t ) は、t > t0 で P( t0 ) から P( t ) までの曲線 P の長さを表し、t < t0 では長さを負数で表したものになります。

[ 式 10 - 1 ], [ 式 10 - 3 ] より、ds/dt > 0 となりますから、s は単調増加関数で t = t ( s ) なる逆関数が存在します。

よって bezier 曲線 P が弧長パラメータ s の関数として次のように記述できます。

          [ 式 10 - 4 ]


ただし bezier parameter t を弧長 s で表した関数 t ( s ) は、その存在を証明できても、解析的な関数としては記述できません。


接線ベクトルは P を s で微分したものですから、次の[ 式 10 - 5 ] のようになります。
これは [ 式 06 - 02 ] と同じです。

          [ 式 10 - 5 ]


接線ベクトルは必ず単位ベクトルになります。

          [ 式 10 - 6 ]


#3

10 - 3 接線ベクトルが求まらない理由


2016 / 01 / 11     [ 式 10 - 6 ] を [ 式 10 - 8 ] に訂正
**09 bezier line 接線ベクトル** で触れたように、**ハンドルの出ていないポイントでの接線ベクトルが 0 ベクトルになって求まらない** この理由を考えてみます。

[ 式 10 - 4 ] より、

      [ 式 10 - 7 ]
          [ 式 10 - 8 ]


t = 0 の時に [ 式 10 - 8 ] が 0 ベクトルになってしまうのは接線ベクトルが 0 になるのではなく、ds/dt が 0 になってしまうことを意味します。

[ 式 10 - 1 ], [ 式 10 - 3 ] より、ds/dt > 0 でなければなりませんが、この場合、ds/dt = 0 になってしまいます。

これは outhandle が出ていない場合、bezier parameter t が曲線記述のパラメータとして有効なのは、 t = 0 を含まず、0 < t の範囲になることを意味します。

座標値を求める場合には t = 0 では境界条件が返されるだけですので問題は生じないのですが、接線ベクトルを求める場合は t = 0 では直接には求まらず、t = 0 の右方微分から求める必要があります。

[ 式 09 - 07 ] はそれを表していることになります。

          [ 式 09 - 07 ]