matplotlib.bezier#

Un module fournissant des fonctions utilitaires concernant la manipulation du chemin de Bézier.

classe matplotlib.bezier. BézierSegment ( points_de_contrôle ) [source] #

Socles :object

Un segment de Bézier de dimension d.

Paramètres :
tableau control_points (N, d)

Localisation des N points de contrôle.

axis_aligned_extrema ( ) [source] #

Renvoie la dimension et l'emplacement des extrema intérieurs de la courbe.

Les extrema sont les points le long de la courbe où l'une de ses dérivées partielles est nulle.

Retours :
assombrit le tableau d'entiers

Indice\(i\)de la dérivée partielle nulle à chaque extremum intérieur.

tableau dzeros de float

De même taille que dims. La\(t\)tel que\(d/dx_i B(t) = 0\)

propriété control_points #

Les points de contrôle de la courbe.

degré de propriété #

Degré du polynôme. Un moins le nombre de points de contrôle.

dimension de propriété #

La dimension de la courbe.

point_at_t ( t ) [source] #

Évalue la courbe en un seul point, renvoyant un tuple de d floats.

propriété polynomial_coefficients #

Les coefficients polynomiaux de la courbe de Bézier.

Avertissement

Suit la convention opposée de numpy.polyval.

Retours :
(n+1, d) tableau

Coefficients après développement en base polynomiale, où\(n\) est le degré de la courbe de Bézier et\(d\)sa dimension. Ce sont les nombres (\(C_j\)) de sorte que la courbe puisse s'écrire\(\sum_{j=0}^n C_j t^j\).

Remarques

Les coefficients sont calculés comme

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

\(P_i\)sont les points de contrôle de la courbe.

exception matplotlib.bezier. NonIntersectingPathException [source] #

Socles :ValueError

matplotlib.bezier. check_if_parallel ( dx1 , dy1 , dx2 , dy2 , tolérance = 1e-05 ) [source] #

Vérifiez si deux droites sont parallèles.

Paramètres :
dx1, dy1, dx2, dy2 flottant

Les gradients dy / dx des deux lignes.

flotteur de tolérance

La tolérance angulaire en radians jusqu'à laquelle les lignes sont considérées comme parallèles.

Retours :
est_parallèle
  • 1 si deux droites sont parallèles dans le même sens.

  • -1 si deux droites sont parallèles en sens opposé.

  • Faux sinon.

matplotlib.bezier. find_bezier_t_intersecting_with_closedpath ( bezier_point_at_t , inside_closedpath , t0 = 0.0 , t1 = 1.0 , tolerance = 0.01 ) [source] #

Trouvez l'intersection de la courbe de Bézier avec un chemin fermé.

Le point d'intersection t est approximé par deux paramètres t0 , t1 tels que t0 <= t <= t1 .

La recherche commence à partir de t0 et t1 et utilise un simple algorithme de bissectrice. Par conséquent, l'un des points d'extrémité doit être à l'intérieur du chemin tandis que l'autre ne l'est pas. La recherche s'arrête lorsque la distance des points paramétrés par t0 et t1 devient inférieure à la tolérance donnée .

Paramètres :
bezier_point_at_t appelable

Une fonction renvoyant les coordonnées x, y du Bézier au paramètre t . Il doit porter la signature :

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

Une fonction renvoyant True si un point donné (x, y) se trouve à l'intérieur du chemin fermé. Il doit porter la signature :

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

Paramètres de démarrage pour la recherche.

flotteur de tolérance

Distance maximale autorisée entre les points finaux.

Retours :
t0, t1 flottant

Les paramètres du chemin de Bézier.

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

Trouvez les points de contrôle de la courbe de Bézier passant par ( c1x , c1y ), ( mmx , mmy ) et ( c2x , c2y ), aux valeurs paramétriques 0, 0,5 et 1.

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

Renvoie l'intersection entre la droite passant par ( cx1 , cy1 ) à l'angle t1 et la droite passant par ( cx2 , cy2 ) à l'angle t2 .

matplotlib.bezier. get_normal_points ( cx , cy , cos_t , sin_t , longueur ) [source] #

Pour une droite passant par ( cx , cy ) et ayant un angle t , retourner les emplacements des deux points situés le long de sa droite perpendiculaire à la distance de longueur .

matplotlib.bezier. get_parallels ( bezier2 , largeur ) [source] #

Étant donné les points de contrôle de Bézier quadratiques bezier2 , renvoie les points de contrôle des lignes de Bézier quadratiques à peu près parallèles à une ligne donnée séparées par width .

matplotlib.bezier. cercle_intérieur ( cx , cy , r ) [source] #

Renvoie une fonction qui vérifie si un point est dans un cercle de centre ( cx , cy ) et de rayon r .

La fonction renvoyée porte la signature :

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

Semblable à get_parallels, renvoie les points de contrôle de deux lignes de Bézier quadratiques ayant une largeur à peu près parallèle à celle donnée séparée par width .

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

Divisez une courbe de Bézier en deux à l'intersection avec un chemin fermé.

Paramètres :
Bézier (N, 2) en forme de tableau

Points de contrôle du segment Bézier. Voir BezierSegment.

inside_closedpath appelable

Une fonction renvoyant True si un point donné (x, y) se trouve à l'intérieur du chemin fermé. Voir aussi find_bezier_t_intersecting_with_closedpath.

flotteur de tolérance

La tolérance pour l'intersection. Voir aussi find_bezier_t_intersecting_with_closedpath.

Retours :
gauche droite

Listes des points de contrôle pour les deux segments de Bézier.

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

Divisez un segment de Bézier défini par ses points de contrôle bêta en deux segments séparés divisés en t et renvoyez leurs points de contrôle.

matplotlib.bezier. split_path_inout ( chemin , intérieur , tolérance = 0.01 , reorder_inout = False ) [source] #

Diviser un chemin en deux segments au point où devient False.inside(x, y)