Location : Home > Languages > Perl > Package
Title : Math::Bezier::Convert
Toolbox Logo

名称

 Math::Bezier::Convert - 3次ベジエ曲線と2次ベジエ曲線を相互に変換


概要

use Math::Bezier::Convert;

@new_cubic = divide_cubic($cx1, $cy1, $cx2, $cy2, $cx3, $cy3, $cx4, $cy4, $t);
@new_quad  = divide_quadratic($cx1, $cy1, $cx2, $cy2, $cx3, $cy3, $t);
@quad = cubic_to_quadratic(@cubic);
@cubic = quadratic_to_cubic(@quad);
@lines = cubic_to_lines(@cubic);
@lines = quadratic_to_lines(@cubic);

説明

 Math::Bezier::Convert は2次ベジエ曲線を3次ベジエ曲線に、近似3次ベジエ曲線を2次ベジエ曲線に、近似3次ベジエ曲線・2次曲線を線分群に変換する関数を提供する。

 各関数はベジエ曲線の制御点の座標の配列を引数としてとる。
 3次ベジエ曲線は、1つの錨制御点(anchor control point)・2つの導制御点(director control points)・1つの錨制御点・2つの導制御点…最後の錨制御点からなる。
 2次ベジエ曲線は1つの錨制御点・1つの導制御点…最後の錨制御点からなる。
 曲線は錨制点は通過するが、導制御点は通過しない。
 各点は X 及び Y 座標からなる。これらは ($x1, $y1, $x2, $y2, ...) のように単純に曲線の配列並べられている。

divide_cubic( $cx1, $cy1, $cx2, $cy2, $cx3, $cy3, $cx4, $cy4, $t )

 比率 $t において3次ベジエ曲線を分割し、2つの線分(7つの点)を返す。

divide_quadratic( $cx1, $cy1, $cx2, $cy2, $cx3, $cy3, $t )

 比率 $t において2次ベジエ曲線を分割し、2つの線分(5つの点)を返す。

cubic_to_quadratic( @cubic )

 近似3次ベジエ曲線を2次ベジエ曲線に変換し、2次ベジエ曲線の制御点の配列を返す。

quadratic_to_cubic( @quadratic )

 2次ベジエ曲線を3次ベジエ曲線に変換し、3次ベジエ曲線の制御点の配列を返す。

cubic_to_lines( @cubic )

 近似3次ベジエ曲線を線分群に変換し、終点の配列を返す。

quadratic_to_lines( @cubic )

 近似2次ベジエ曲線を線分群に変換し、終点の配列を返す。

グローバル変数

$Math::Bezier::Convert::APPROX_QUADRATIC_TOLERANCE
$Math::Bezier::Convert::APPROX_LINE_TOLERANCE

 3次ベジエ曲線上の点と近似点の間の距離の許容範囲。デフォルトは1。

$Math::Bezier::Convert::CTRL_PT_TOLERANCE

 2次から3次への変換時における錨制御点−導制御点の間の距離比率の許容範囲。デフォルトは3。この値は1.5以上でなければならない。

エクスポート

 デフォルトではない。
 ただし ':all' タグが指定された場合にはあらゆる関数はエクスポートされる。
 あらゆるグローバル変数はいかなる場合にもエクスポートされない。


著作権

 Copyright 2000 Yasuhiro Sasama (ySas), ysas@nmt.ne.jp

 本ライブラリはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。


参考資料

 perl(1)

Toolbox Logo
Updated : 2007/04/03