matplotlib.bezier#

Ein Modul, das einige nützliche Funktionen bezüglich der Bezier-Pfad-Manipulation bereitstellt.

Klasse matplotlib.bezier. BezierSegment ( control_points ) [Quelle] #

Basen:object

Ein d-dimensionales Bezier-Segment.

Parameter :
control_points (N, d) -Array

Lage der N Kontrollpunkte.

axis_aligned_extrema ( ) [Quelle] #

Geben Sie die Dimension und Position der inneren Extrema der Kurve zurück.

Die Extrema sind die Punkte entlang der Kurve, an denen eine ihrer partiellen Ableitungen Null ist.

Rückgaben :
dimmt Array von int

Index\(i\)der partiellen Ableitung, die an jedem inneren Extrema Null ist.

dzeros- Array von float

Gleiche Größe wie Dims. Das\(t\)so dass\(d/dx_i B(t) = 0\)

Eigenschaft Kontrollpunkte #

Die Kontrollpunkte der Kurve.

Eigenschaft Grad #

Grad des Polynoms. Eins weniger als die Anzahl der Kontrollpunkte.

Eigenschaft Dimension #

Die Dimension der Kurve.

point_at_t ( t ) [Quelle] #

Werten Sie die Kurve an einem einzelnen Punkt aus und geben Sie ein Tupel von d Floats zurück.

Eigenschaft polynomial_coefficients #

Die Polynomkoeffizienten der Bezier-Kurve.

Warnung

Folgt der entgegengesetzten Konvention von numpy.polyval.

Rückgaben :
(n+1, d)-Array

Koeffizienten nach Erweiterung auf Polynombasis, wo\(n\) ist der Grad der Bezierkurve und\(d\)seine Dimension. Das sind die Nummern (\(C_j\)) so dass die Kurve geschrieben werden kann\(\sum_{j=0}^n C_j t^j\).

Anmerkungen

Die Koeffizienten werden berechnet als

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

wo\(P_i\)sind die Kontrollpunkte der Kurve.

Ausnahme matplotlib.bezier. NonIntersectingPathException [Quelle] #

Basen:ValueError

matplotlib.bezier. check_if_parallel ( dx1 , dy1 , dx2 , dy2 , Toleranz = 1e-05 ) [Quelle] #

Überprüfen Sie, ob zwei Linien parallel sind.

Parameter :
dx1, dy1, dx2, dy2 Float

Die Steigungen dy / dx der beiden Linien.

Toleranzschwimmer _

Die Winkeltoleranz im Bogenmaß, bis zu der die Linien als parallel betrachtet werden.

Rückgaben :
ist_parallel
  • 1, wenn zwei Geraden in derselben Richtung parallel sind.

  • -1, wenn zwei Geraden in entgegengesetzter Richtung parallel sind.

  • Sonst falsch.

matplotlib.bezier. find_bezier_t_intersecting_with_closedpath ( bezier_point_at_t , inside_closedpath , t0 = 0,0 , t1 = 1,0 , Toleranz = 0,01 ) [Quelle] #

Finden Sie den Schnittpunkt der Bezier-Kurve mit einem geschlossenen Pfad.

Der Schnittpunkt t wird durch zwei Parameter t0 , t1 so angenähert, dass t0 <= t <= t1 .

Die Suche beginnt bei t0 und t1 und verwendet einen einfachen Halbierungsalgorithmus, daher muss einer der Endpunkte innerhalb des Pfads liegen, während der andere dies nicht tut. Die Suche stoppt, wenn der Abstand der durch t0 und t1 parametrisierten Punkte kleiner als die vorgegebene Toleranz wird .

Parameter :
bezier_point_at_t aufrufbar

Eine Funktion, die die x-, y-Koordinaten des Beziers am Parameter t zurückgibt . Es muss die Signatur haben:

bezier_point_at_t(t: float) -> tuple[float, float]
inside_closedpath aufrufbar

Eine Funktion, die True zurückgibt, wenn sich ein bestimmter Punkt (x, y) innerhalb des geschlossenen Pfads befindet. Es muss die Signatur haben:

inside_closedpath(point: tuple[float, float]) -> bool
t0, t1 Schwimmer

Startparameter für die Suche.

Toleranzschwimmer _

Maximal zulässiger Abstand zwischen den Endpunkten.

Rückgaben :
t0, t1 Schwimmer

Die Bezier-Pfadparameter.

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

Suchen Sie Kontrollpunkte der Bezier-Kurve, die durch ( c1x , c1y ), ( mmx , mmy ) und ( c2x , c2y ) verlaufen, bei den Parameterwerten 0, 0,5 und 1.

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

Geben Sie den Schnittpunkt zwischen der Linie durch ( cx1 , cy1 ) bei Winkel t1 und der Linie durch ( cx2 , cy2 ) bei Winkel t2 zurück .

matplotlib.bezier. get_normal_points ( cx , cy , cos_t , sin_t , length ) [Quelle] #

Für eine Linie, die durch ( cx , cy ) verläuft und einen Winkel t hat, kehren Sie die Positionen der beiden Punkte zurück, die entlang ihrer senkrechten Linie im Abstand von length liegen .

matplotlib.bezier. get_parallels ( bezier2 , width ) [Quelle] #

Gibt bei gegebenen quadratischen Bezier-Kontrollpunkten bezier2 Kontrollpunkte von quadratischen Bezier-Linien zurück, die grob parallel zu den gegebenen durch width getrennt sind .

matplotlib.bezier. inside_circle ( cx , cy , r ) [Quelle] #

Gibt eine Funktion zurück, die prüft, ob sich ein Punkt in einem Kreis mit Mittelpunkt ( cx , cy ) und Radius r befindet .

Die zurückgegebene Funktion hat die Signatur:

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

Ähnlich wie get_parallels gibt es Kontrollpunkte von zwei quadratischen Bezier-Linien zurück, die eine Breite haben, die ungefähr parallel zu einer gegebenen ist, getrennt durch width .

matplotlib.bezier. split_bezier_intersecting_with_closedpath ( bezier , inside_closedpath , Toleranz = 0,01 ) [Quelle] #

Teilen Sie eine Bezier-Kurve am Schnittpunkt mit einem geschlossenen Pfad in zwei Teile.

Parameter :
bezier (N, 2) Array-artig

Kontrollpunkte des Bezier-Segments. Siehe BezierSegment.

inside_closedpath aufrufbar

Eine Funktion, die True zurückgibt, wenn sich ein bestimmter Punkt (x, y) innerhalb des geschlossenen Pfads befindet. Siehe auch find_bezier_t_intersecting_with_closedpath.

Toleranzschwimmer _

Die Toleranz für den Schnittpunkt. Siehe auch find_bezier_t_intersecting_with_closedpath.

Rückgaben :
links rechts

Listen von Kontrollpunkten für die beiden Bezier-Segmente.

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

Teilen Sie ein Bezier-Segment, das durch seine Kontrollpunkte Beta definiert ist, in zwei separate Segmente, die bei t geteilt werden, und geben Sie ihre Kontrollpunkte zurück.

matplotlib.bezier. split_path_inout ( Pfad , innen , Toleranz = 0,01 , reorder_inout = False ) [Quelle] #

Teilen Sie einen Pfad an dem Punkt, an dem False wird, in zwei Segmente.inside(x, y)