Location : Home > Languages > Perl > Package
Title : Math::Gradient
Toolbox Logo

名称

 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 本体と同等の条件下で修正/再配布してもよい。

Toolbox Logo
Updated : 2006/09/07