matplotlib.bezier#

ベジエ パス操作に関するいくつかのユーティリティ関数を提供するモジュール。

クラス matplotlib.bezier。BezierSegment ( control_points ) [ソース] #

拠点:object

d 次元のベジエ セグメント。

パラメータ:
control_points (N, d) 配列

N 個のコントロール ポイントの位置。

axis_aligned_extrema ( ) [ソース] #

曲線の内部極値の次元と位置を返します。

極値は、その偏導関数の 1 つがゼロである曲線に沿ったポイントです。

戻り値:
int の配列を暗くします

索引\(i\)各内部極値でゼロである偏導関数の。

float のdzeros配列

ディムと同じサイズです。の\(t\)そのような\(d/dx_i B(t) = 0\)

プロパティ control_points #

曲線の制御点。

特性 度数_

多項式の次数。制御点の数を 1 つ減らします。

プロパティ 次元#

曲線の寸法。

point_at_t ( t ) [ソース] #

単一点で曲線を評価し、d個のfloat のタプルを返します。

プロパティ polynomial_coefficients #

ベジエ曲線の多項式係数。

警告

とは逆の規則に従いnumpy.polyvalます。

戻り値:
(n+1, d) 配列

多項式ベースで展開した後の係数、ここで\(n\) はベジエ曲線の次数であり、\(d\)その寸法。これらは数字です(\(C_j\)) 曲線を書くことができるように\(\sum_{j=0}^n C_j t^j\).

ノート

係数は次のように計算されます。

\[{n \choose j} \sum_{i=0}^j (-1)^{i+j} {j \choose i} P_i\]

どこ\(P_i\)曲線の制御点です。

例外 matplotlib.bezier。NonIntersectingPathException [ソース] #

拠点:ValueError

matplotlib.bezier. check_if_parallel ( dx1 , dy1 , dx2 , dy2 ,許容範囲= 1e-05 ) [ソース] #

2 つの直線が平行かどうかを確認します。

パラメータ:
dx1、dy1、dx2、dy2 float

2 つの線の勾配dy / dx

公差フロート

線が平行と見なされるラジアン単位の角度許容差。

戻り値:
is_parallel
  • 2 つの直線が同じ方向に平行である場合は 1。

  • 2 本の直線が反対方向に平行な場合は -1。

  • それ以外の場合は偽。

matplotlib.bezier. find_bezier_t_intersecting_with_closedpath ( bezier_point_at_t , inside_closedpath , t0 = 0.0 , t1 = 1.0 ,許容範囲= 0.01 ) [ソース] #

閉じたパスとベジエ曲線の交点を見つけます。

交点tは、 t0 <= t <= t1となる ように、 2 つのパラメーターt0t1によって近似されます。

検索はt0t1から開始され、単純な bisecting アルゴリズムを使用するため、終点の 1 つがパスの内側にある必要があり、もう 1 つはそうではありません。t0t1によってパラメーター化されたポイントの距離が、指定された許容値よりも小さくなると、検索が停止し ます。

パラメータ:
bezier_point_at_t呼び出し可能

パラメータtのベジエの x、y 座標を返す関数。署名が必要です。

bezier_point_at_t(t: float) -> tuple[float, float]
inside_closedpath呼び出し可能

指定された点 (x, y) が閉じたパス内にある場合に True を返す関数。署名が必要です。

inside_closedpath(point: tuple[float, float]) -> bool
t0、t1フロート

検索の開始パラメーター。

公差フロート

最終点間の最大許容距離。

戻り値:
t0、t1フロート

ベジエ パス パラメーター。

matplotlib.bezier. find_control_points ( c1x , c1y , mmx , mmy , c2x , c2y ) [ソース] #

パラメータ値 0、0.5、および 1 で、( c1x 、 c1y )、( mmx 、 mmy )、および ( c2xc2y )通過するベジエ曲線制御点を見つけます。

matplotlib.bezier. get_cos_sin ( x0 , y0 , x1 , y1 ) [ソース] #
matplotlib.bezier. get_intersection ( cx1 , cy1 , cos_t1 , sin_t1 , cx2 , cy2 , cos_t2 , sin_t2 ) [ソース] #

角度 t1で ( cx1 , cy1 ) を通る直線と角度t2で ( cx2 , cy2 ) を通る直線との交点を返します。

matplotlib.bezier. get_normal_points ( cx , cy , cos_t , sin_t , length ) [ソース] #

( cx , cy ) を通り、角度tをもつ直線について、その垂線に沿ってlengthの距離にある 2 つの点の位置を返します。

matplotlib.bezier. get_parallels ( bezier2 , width ) [ソース] #

2 次ベジエ制御点bezier2を指定すると、 widthで区切られた所定の線にほぼ平行な 2 次ベジエ線の制御点が返されます。

matplotlib.bezier. inside_circle ( cx , cy , r ) [ソース] #

ポイントが中心 ( cx , cy ) と半径rの円内にあるかどうかをチェックする関数を返します。

返された関数には署名があります。

f(xy: tuple[float, float]) -> bool
matplotlib.bezier. make_wedged_bezier2 ( bezier2 , width , w1 = 1.0 , wm = 0.5 , w2 = 0.0 ) [source] #

get_parallels と同様に、指定された幅とほぼ平行な幅を持つ 2 つの 2 次ベジェ ラインのコントロール ポイントを、 width で区切って返し ます

matplotlib.bezier. split_bezier_intersecting_with_closedpath ( bezier , inside_closedpath , tolerance = 0.01 ) [source] #

閉じたパスとの交点でベジエ曲線を 2 つに分割します。

パラメータ:
bezier (N, 2) 配列のようなもの

ベジエ セグメントのコントロール ポイント。を参照してくださいBezierSegment

inside_closedpath呼び出し可能

指定された点 (x, y) が閉じたパス内にある場合に True を返す関数。も参照してくださいfind_bezier_t_intersecting_with_closedpath

公差フロート

交差の許容差。も参照してください find_bezier_t_intersecting_with_closedpath

戻り値:
左右

2 つのベジエ セグメントのコントロール ポイントのリスト。

matplotlib.bezier. split_de_casteljau ( beta , t ) [source] #

制御点betaで定義されたベジエ セグメントをtで分割された 2 つの別個のセグメントに分割し、それらの制御点を返します。

matplotlib.bezier. split_path_inout ( path , inside , tolerance = 0.01 , reorder_inout = False ) [source] #

False になるポイントでパスを 2 つのセグメントに分割します。inside(x, y)