matplotlib.bezier#
Ein Modul, das einige Hilfsfunktionen zur Manipulation von Bézier-Pfaden bereitstellt.
- class matplotlib.bezier.BezierSegment(control_points)[Quelle]#
Bases:
objectEin d-dimensionales Bézier-Segment.
- Parameter:
- control_points(N, d) Array
Position der N Kontrollpunkte.
- axis_aligned_extrema()[Quelle]#
Gibt die Dimension und Position der inneren Extrema der Kurve zurück.
Die Extrema sind die Punkte auf der Kurve, an denen eine ihrer partiellen Ableitungen null ist.
- Gibt zurück:
- dimsArray von int
Index \(i\) der partiellen Ableitung, die bei jedem inneren Extremum null ist.
- dzerosArray von float
Von gleicher Größe wie dims. Das \(t\), so dass \(d/dx_i B(t) = 0\)
- property control_points#
Die Kontrollpunkte der Kurve.
- property degree#
Grad des Polynoms. Einer weniger als die Anzahl der Kontrollpunkte.
- property dimension#
Die Dimension der Kurve.
- point_at_t(t)[Quelle]#
Evaluiert die Kurve an einem einzelnen Punkt und gibt ein Tupel von d Floats zurück.
- property polynomial_coefficients#
Die Polynomkoeffizienten der Bézier-Kurve.
Warnung
Folgt der entgegengesetzten Konvention von
numpy.polyval.- Gibt zurück:
- (n+1, d) Array
Koeffizienten nach der Entwicklung in Polynombasis, wobei \(n\) der Grad der Bézier-Kurve und \(d\) ihre Dimension ist. Dies sind die Zahlen (\(C_j\)), so dass die Kurve geschrieben werden kann als \(\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\]wobei \(P_i\) die Kontrollpunkte der Kurve sind.
- exception matplotlib.bezier.NonIntersectingPathException[Quelle]#
Bases:
ValueError
- matplotlib.bezier.check_if_parallel(dx1, dy1, dx2, dy2, tolerance=1e-05)[Quelle]#
Prüft, ob zwei Linien parallel sind.
- Parameter:
- dx1, dy1, dx2, dy2float
Die Gradienten dy/dx der beiden Linien.
- tolerancefloat
Die Winkeltoleranz in Radiant, bis zu der die Linien als parallel gelten.
- Gibt zurück:
- is_parallel
1, wenn zwei Linien in gleicher Richtung parallel sind.
-1, wenn zwei Linien in entgegengesetzter Richtung parallel sind.
False andernfalls.
- matplotlib.bezier.find_bezier_t_intersecting_with_closedpath(bezier_point_at_t, inside_closedpath, t0=0.0, t1=1.0, tolerance=0.01)[Quelle]#
Findet den Schnittpunkt der Bézier-Kurve mit einem geschlossenen Pfad.
Der Schnittpunkt t wird durch zwei Parameter t0, t1 approximiert, so dass t0 <= t <= t1.
Die Suche beginnt bei t0 und t1 und verwendet einen einfachen Bisektionsalgorithmus. Daher muss einer der Endpunkte innerhalb des Pfades liegen, während der andere dies nicht tut. Die Suche stoppt, wenn die Distanz der durch t0 und t1 parametrisierten Punkte kleiner als die angegebene tolerance wird.
- Parameter:
- bezier_point_at_tcallable
Eine Funktion, die die x, y Koordinaten des Béziers bei Parameter t zurückgibt. Sie muss die Signatur
bezier_point_at_t(t: float) -> tuple[float, float]
- inside_closedpathcallable
Eine Funktion, die True zurückgibt, wenn ein gegebener Punkt (x, y) innerhalb des geschlossenen Pfades liegt. Sie muss die Signatur
inside_closedpath(point: tuple[float, float]) -> bool
- t0, t1float
Startparameter für die Suche.
- tolerancefloat
Maximal erlaubte Distanz zwischen den Endpunkten.
- Gibt zurück:
- t0, t1float
Die Bézier-Pfadparameter.
- matplotlib.bezier.find_control_points(c1x, c1y, mmx, mmy, c2x, c2y)[Quelle]#
Findet die Kontrollpunkte der Bézier-Kurve, die durch (c1x, c1y), (mmx, mmy) und (c2x, c2y) bei den parametrischen Werten 0, 0.5 und 1 verläuft.
- matplotlib.bezier.get_intersection(cx1, cy1, cos_t1, sin_t1, cx2, cy2, cos_t2, sin_t2)[Quelle]#
Gibt den Schnittpunkt zwischen der Linie durch (cx1, cy1) im Winkel t1 und der Linie durch (cx2, cy2) im 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 den Winkel t hat, werden die Positionen der beiden Punkte zurückgegeben, die sich entlang ihrer Senkrechten im Abstand von length befinden.
- matplotlib.bezier.get_parallels(bezier2, width)[Quelle]#
Gegeben die quadratischen Bézier-Kontrollpunkte bezier2, gibt diese Funktion die Kontrollpunkte von quadratischen Bézier-Linien zurück, die ungefähr parallel zu den gegebenen Linien sind und durch width getrennt werden.
- matplotlib.bezier.inside_circle(cx, cy, r)[Quelle]#
Gibt eine Funktion zurück, die prüft, ob ein Punkt in einem Kreis mit Zentrum (cx, cy) und Radius r liegt.
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_parallelsgibt diese Funktion die Kontrollpunkte von zwei quadratischen Bézier-Linien zurück, die eine ungefähr parallele Breite zum gegebenen haben und durch width getrennt sind.
- matplotlib.bezier.split_bezier_intersecting_with_closedpath(bezier, inside_closedpath, tolerance=0.01)[Quelle]#
Teilt eine Bézier-Kurve an der Schnittstelle mit einem geschlossenen Pfad in zwei Teile.
- Parameter:
- bezier(N, 2) array-ähnlich
Kontrollpunkte des Bézier-Segments. Siehe
BezierSegment.- inside_closedpathcallable
Eine Funktion, die True zurückgibt, wenn ein gegebener Punkt (x, y) innerhalb des geschlossenen Pfades liegt. Siehe auch
find_bezier_t_intersecting_with_closedpath.- tolerancefloat
Die Toleranz für die Schnittmenge. Siehe auch
find_bezier_t_intersecting_with_closedpath.
- Gibt zurück:
- links, rechts
Listen von Kontrollpunkten für die beiden Bézier-Segmente.