pytakt.interpolator module¶
このモジュールには、折れ線補間や区分3次補間のためのクラスが定義されています。
- class Point(t, value, slope=1)¶
Bases:
object補間の基準となる制御点を表すクラスです。各制御点は、時刻と値、および 傾きに関する情報を持ちます。このモジュールの補間法では、補間された 直線/曲線は必ず制御点を通ります。
コンストラクタ引数
- Parameters:
t (int, float or None) – 制御点の時刻。Noneの場合は、Noneではない 前後の制御点の時刻から等分分割によってこの制御点の時刻を決定する ことを意味します。
value (int or float) – 制御点での値。
slope (int, float, None, or 2-tuple) – 制御点での傾きを、折れ線の場合に 対する相対倍率で指定します。従って、すべての傾きが1である 場合は、折れ線による補間となります(デフォルト)。 区間の始点と終点の傾きの少なくとも一方が1以外の実数の場合、 その区間は3次曲線による補間となります。 slope に ‘free’ という文字列を指定すると、前後の制御点の情報 から、滑らかに接続できるように傾きが自動計算されます。 slope は 2-tuple でも良く、その場合は左と右の傾き値を個別に 指定します。左の傾きが None である場合は、補間せずに階段状に 値を変えることを意味します。slope=None は slope=(None, 1) と等価です。
- class Interpolator(points)¶
Bases:
object値を補間するためのオブジェクトを表すクラスです。 制御点のリストを与えてこのオブジェクト f を生成すると、 f(時刻) のように呼び出して補間された値を取得できるようになります。 最初の制御点の時刻以前は最初の制御点の値、 最後の制御点の時刻以後は最後の制御点の値になります。
コンストラクタ引数
- Parameters:
points (list of Point, etc.) –
制御点の list (長さ1以上) です。 制御点は時刻順に並んでいる必要があります。 同一時刻に2つの制御点を指定することは可能で、のこぎり波状の 変化の場合に利用できます。各制御点は
Pointインスタンス の他、次の省略形が使えます。value – Point(None, value) と等価。
(t, value) – Point(t, value) と等価。
[value, slope] – Point(None, value, slope) と等価。
(t, value, slope) – Point(t, value, slope) と等価。
最初の制御点の時刻が None である場合は、0とみなされます。 最後の制御点の時刻に対して None は指定できません。 slope に ‘free’ を指定できるのは、最初と最後以外の制御点のみ です。
Examples
Interpolator([0, (480, 100)])時刻0で0、時刻480で100となるように線形補間する関数を表します。
Interpolator([0, 100, (960, 50)])時刻0で0、時刻480で100, 時刻960で50となるような折れ線に沿って 変化する関数を表します。
Interpolator([0, [100, None], (960, 50, None)])時刻0で0、時刻480で100, 時刻960で50と階段状に変化する関数を 表します。
Interpolator([0, [100, 'free'], (960, 50)])時刻0で0、時刻480で100, 時刻960で50と滑らかに変化する 区分3次曲線を表します。
Interpolator([(0, 100, 3.0), (480, 0, 0.0)])時刻0は値が100で傾きは2点をつなぐ直線の3倍、時刻480は値が0で 傾きは0となるような3次曲線(この場合、指数的な減衰に似た曲線)を 表します。
Interpolator([(0, 100, 0), (240, 0, 0) (480, 100, 0)])100 -> 0 -> 100 と cos関数のように滑らかに変化する 区分3次曲線を表します。
- maxtime() Union[int, float, Fraction]¶
最後の制御点の時刻を返します。
- iterator(tstep, ystep=-1) Iterator[Tuple[Union[int, float, Fraction], float]]¶
補間された直線・曲線に沿って時刻と値の組 (t, value) を順に yield するジェネレータ関数です。時刻の範囲は、最初の制御点の時刻から 最後の制御点の時刻までです。
- Parameters:
tstep (ticks) – 時間の刻み値を指定します。 制御点の存在する時刻を基準にしてそこからこの時間間隔で順に 出力されます。制御点の存在する時刻では、必ず出力されます。
ystep (int or float, optional) – 指定した場合、 直前に出力した値と比べ変化の絶対値が ystep 以下の場合に 出力が省かれます(ただし、制御点の存在する時刻では、それに かかわらず出力されます)。