/ /方向に曲げることによってセグメントを変換する - c ++、OpenGL、数学、レンダリング

方向に曲げることによってセグメントを変換する - c ++、OpenGL、数学、レンダリング

私はこれにどのようにアプローチするか分からない: 私は単位の方向に関して長さ1のセグメントを「曲げる」必要があります。 曲げの強さは、セグメントの長さに対して1 / yです。 変換は、セグメント上のすべてのポイントに対して定義する必要があり、長さは保持されるべきです。 次のことを覚えておいてください: ここに画像の説明を入力

回答:

回答№1は1

私はあなたがセグメントを曲げたいと思うそれは、一定の曲率kを持つことになります。つまり、半径1 / kの円の長さ1の弧になるでしょう。次に、セグメントの点(0、t)

(1 - cos(kt))/k    ,    sin(kt)/k

kの値が小さい場合(すなわち、曲率ゼロの事故による除算を防ぐために、次の式(これは上記のk = 0付近のテイラー展開)でマップします。

  k t^2 / 2       ,      t - k^2 t^3 / 6

編集: あなたのコメントに続いて:

あなたの方向ベクトルが(x、y)であると仮定すると、円弧の終わりにその接ベクトルを与える対応する曲率の値(t = 1)は次のように与えられます:

k = atan2(x, y)