Location : Home > Languages > Perl > Package Title : Math::Gradient |
![]() |
Math::Gradient - カラーパレットからグラジエントを作成する
use Math::Gradient qw(multi_gradient); # 100点のカラーパレットから 6 RGB 値の間の変換を行う。values my(@hot_spots) = ([ 0, 255, 0 ], [ 255, 255, 0 ], [ 127, 127, 127 ], [ 0, 0, 255 ], [ 127, 0, 0 ], [ 255, 255, 255 ]); my(@gradient) = multi_array_gradient(100, @hot_spots);
Math::Gradient は数値の間の滑らかな補間(傾きを計算)を行うために用いられる。私は色を混ぜる場合に使うために開発したが、他のアプリケーションにおいても利用できるだろう。メソッドは基本にも複数点に対しても、スカラーにも配列にも利用可能である。
gradient($start_value, $end_value, $steps)
本関数は $start_value と $end_value の間で分散された値の配列を返す。3つの引数は数値でなければならない。$steps は2点の間で発生する段階の数である。例えば gradient(0, 10, 4) に対して配列 (2, 4, 6, 8) を返す。すなわち 0 から 10 までの間で均等に4分割した値が格納されている。これに対し gradient(0, 1, 3) には (0.25, 0.5, 0.75) を返す。これは Math::Gradient モジュールにおける最も基本的な関数ではあるがあまり面白くはない。しかし以下に記すすべての関数で用いている。
array_gradient($start_value, $end_value, $steps)
gradient() が $start_value 及び $end_value に数値を要求するのに対し array_gradient() は配列参照を要求する。供給される配列は数値のリストとして渡され、すべての配列は同じ大きさであることが要求される。array_gradient() は $start_value 及び $end_value のリストのすべての値のグラジエントを配列参照で返す。
例えば array_gradient([ 0, 100, 2 ], [ 100, 50, 70], 3) に対しては ([ 25, 87.5, 19 ], [ 50, 75, 36 ], [ 75, 62.5, 53 ]) を返す。
multi_gradient($steps, @values)
multi_gradient() は複数のグラジエントを同時に計算し、リストで返す。そのリストには保管された値が格納されている。$steps がリスト @values にある値の数よりも小さければ項目は @values から削除される。
例えば multi_gradient(10, 0, 100, 50) に対しては (0, 25, 50, 75, 100, 90, 80, 70, 60, 50) を返す。
multi_array_gradient($steps, @values)
multi_array_gradient() は multi_gradient とほぼ同じ動きをするが、引数がスカラーではなく配列参照である点が異なる。(array_gradient() と gradient() の関係と同様。)
Tyler MacDonald, <japh@crackerjack.net>
Copyright 2003 by Tyler MacDonald
本ライブラリはフリーソフトウェアであり、Perl 本体と同等の条件下で修正/再配布してもよい。
![]() |
Updated : 2006/09/07 |