Location : Home > Languages > Perl > Package Title : Math::Bezier::Convert |
![]() |
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)
![]() |
Updated : 2007/04/03 |