matplotlib.bezier#

Un modulo che fornisce alcune funzioni di utilità relative alla manipolazione dei percorsi di Bezier.

classe matplotlib.bezier. BezierSegment ( control_points ) [fonte] #

Basi:object

Un segmento di Bezier d-dimensionale.

Parametri :
control_points (N, d) matrice

Posizione degli N punti di controllo.

axis_aligned_extrema ( ) [fonte] #

Restituisce la dimensione e la posizione degli estremi interni della curva.

Gli estremi sono i punti lungo la curva in cui una delle sue derivate parziali è zero.

Resi :
oscura l' array di int

Indice\(i\)della derivata parziale che è nulla in ogni estremo interno.

matrice dzeros di float

Della stessa dimensione dei dims. Il\(t\)tale che\(d/dx_i B(t) = 0\)

proprietà control_points #

I punti di controllo della curva.

grado di proprietà #

Grado del polinomio. Uno in meno il numero di punti di controllo.

dimensione proprietà n.

La dimensione della curva.

point_at_t ( t ) [fonte] #

Valuta la curva in un singolo punto, restituendo una tupla di d float.

proprietà coefficienti_polinomiali #

I coefficienti polinomiali della curva di Bézier.

Avvertimento

Segue la convenzione opposta da numpy.polyval.

Resi :
(n+1, d) matrice

Coefficienti dopo l'espansione in base polinomiale, dove\(n\) è il grado della curva di bezier e\(d\)la sua dimensione. Questi sono i numeri (\(C_j\)) tale che la curva possa essere scritta\(\sum_{j=0}^n C_j t^j\).

Appunti

I coefficienti sono calcolati come

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

dove\(P_i\)sono i punti di controllo della curva.

eccezione matplotlib.bezier. NonIntersectingPathException [fonte] #

Basi:ValueError

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

Controlla se due rette sono parallele.

Parametri :
dx1, dy1, dx2, dy2 float

I gradienti dy / dx delle due linee.

galleggiante di tolleranza

La tolleranza angolare in radianti fino alla quale le linee sono considerate parallele.

Resi :
è_parallelo
  • 1 se due rette sono parallele nella stessa direzione.

  • -1 se due rette sono parallele in direzione opposta.

  • Falso altrimenti.

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

Trova l'intersezione della curva di Bézier con un percorso chiuso.

Il punto di intersezione t è approssimato da due parametri t0 , t1 tali che t0 <= t <= t1 .

La ricerca inizia da t0 e t1 e utilizza un semplice algoritmo di bisecazione, pertanto uno dei punti finali deve essere all'interno del percorso mentre l'altro no. La ricerca si interrompe quando la distanza dei punti parametrizzati da t0 e t1 diventa minore della tolleranza data .

Parametri :
bezier_point_at_t richiamabile

Una funzione che restituisce le coordinate x, y di Bezier al parametro t . Deve avere la firma:

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

Una funzione che restituisce True se un dato punto (x, y) si trova all'interno del percorso chiuso. Deve avere la firma:

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

Parametri di avvio per la ricerca.

galleggiante di tolleranza

Distanza massima consentita tra i punti finali.

Resi :
t0, t1 fluttuano

I parametri del percorso Bezier.

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

Trova i punti di controllo della curva di Bezier passanti per ( c1x , c1y ), ( mmx , mmy ) e ( c2x , c2y ), ai valori parametrici 0, 0,5 e 1.

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

Restituisce l'intersezione tra la retta passante per ( cx1 , cy1 ) all'angolo t1 e la retta passante per ( cx2 , cy2 ) all'angolo t2 .

matplotlib.bezier. get_normal_points ( cx , cy , cos_t , sin_t , lunghezza ) [fonte] #

Per una retta passante per ( cx , cy ) e avente un angolo t , restituire le posizioni dei due punti situati lungo la sua perpendicolare alla distanza della lunghezza .

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

Dati i punti di controllo di Bezier quadratici bezier2 , restituisce i punti di controllo delle linee di Bezier quadratiche approssimativamente parallele a quella data separate dalla larghezza .

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

Restituisce una funzione che verifica se un punto è in una circonferenza di centro ( cx , cy ) e raggio r .

La funzione restituita ha la firma:

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

Essendo simile a get_parallels, restituisce i punti di controllo di due linee Bezier quadratiche aventi una larghezza approssimativamente parallela a quella data separate da width .

matplotlib.bezier. split_bezier_intersecting_with_closedpath ( bezier , inside_closedpath , tolleranza = 0.01 ) [fonte] #

Dividi una curva di Bezier in due all'intersezione con un percorso chiuso.

Parametri :
bezier (N, 2) simile a un array

Punti di controllo del segmento di Bezier. Vedi BezierSegment.

inside_closedpath richiamabile

Una funzione che restituisce True se un dato punto (x, y) si trova all'interno del percorso chiuso. Vedi anche find_bezier_t_intersecting_with_closedpath.

galleggiante di tolleranza

La tolleranza per l'intersezione. Vedi anche find_bezier_t_intersecting_with_closedpath.

Resi :
sinistra destra

Elenchi di punti di controllo per i due segmenti di Bezier.

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

Dividere un segmento Bezier definito dai suoi punti di controllo beta in due segmenti separati divisi in t e restituire i loro punti di controllo.

matplotlib.bezier. split_path_inout ( percorso , interno , tolleranza = 0.01 , reorder_inout = False ) [fonte] #

Dividere un tracciato in due segmenti nel punto in cui diventa Falso.inside(x, y)