matplotlib.bezier#

Un módulo que proporciona algunas funciones de utilidad con respecto a la manipulación de rutas Bezier.

clase matplotlib.bezier. BezierSegment ( puntos_de_control ) [fuente] #

Bases:object

Un segmento Bezier d-dimensional.

Parámetros :
matriz de puntos de control (N, d)

Ubicación de los N puntos de control.

axis_aligned_extrema ( ) [fuente] #

Devuelve la dimensión y la ubicación de los extremos interiores de la curva.

Los extremos son los puntos a lo largo de la curva donde una de sus derivadas parciales es cero.

Devoluciones :
atenúa la matriz de int

Índice\(i\)de la derivada parcial que es cero en cada extremo interior.

matriz dzeros de flotador

Del mismo tamaño que dims. los\(t\)tal que\(d/dx_i B(t) = 0\)

propiedad control_points #

Los puntos de control de la curva.

grado de propiedad #

Grado del polinomio. Uno menos el número de puntos de control.

dimensión de la propiedad #

La dimensión de la curva.

point_at_t ( t ) [fuente] #

Evalúe la curva en un solo punto, devolviendo una tupla de d flotantes.

propiedad coeficientes_polinómicos #

Los coeficientes polinómicos de la curva de Bezier.

Advertencia

Sigue la convención opuesta de numpy.polyval.

Devoluciones :
(n+1, d) matriz

Coeficientes después de expandirse en base polinomial, donde\(n\) es el grado de la curva de bezier y\(d\)su dimensión. Estos son los números (\(C_j\)) tal que la curva se puede escribir\(\sum_{j=0}^n C_j t^j\).

notas

Los coeficientes se calculan como

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

dónde\(P_i\)son los puntos de control de la curva.

excepción matplotlib.bezier. NonIntersectingPathException [fuente] #

Bases:ValueError

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

Comprueba si dos rectas son paralelas.

Parámetros :
dx1, dy1, dx2, dy2 flotante

Los gradientes dy / dx de las dos líneas.

flotador de tolerancia

La tolerancia angular en radianes hasta la cual las líneas se consideran paralelas.

Devoluciones :
es_paralelo
  • 1 si dos rectas son paralelas en la misma dirección.

  • -1 si dos rectas son paralelas en dirección opuesta.

  • Falso en caso contrario.

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

Encuentre la intersección de la curva Bezier con un camino cerrado.

El punto de intersección t se aproxima mediante dos parámetros t0 , t1 tales que t0 <= t <= t1 .

La búsqueda comienza en t0 y t1 y utiliza un algoritmo de bisección simple, por lo que uno de los puntos finales debe estar dentro de la ruta, mientras que el otro no. La búsqueda se detiene cuando la distancia de los puntos parametrizados por t0 y t1 es menor que la tolerancia dada .

Parámetros :
bezier_point_at_t invocable

Una función que devuelve las coordenadas x, y del Bezier en el parámetro t . Debe tener la firma:

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

Una función que devuelve True si un punto dado (x, y) está dentro del camino cerrado. Debe tener la firma:

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

Parámetros de inicio para la búsqueda.

flotador de tolerancia

Distancia máxima permitida entre los puntos finales.

Devoluciones :
t0, t1 flotante

Los parámetros de la ruta Bezier.

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

Encuentre puntos de control de la curva de Bezier que pasa por ( c1x , c1y ), ( mmx , mmy ) y ( c2x , c2y ), en valores paramétricos 0, 0.5 y 1.

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

Devuelve la intersección entre la línea que pasa por ( cx1 , cy1 ) en el ángulo t1 y la línea que pasa por ( cx2 , cy2 ) en el ángulo t2 .

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

Para una recta que pasa por ( cx , cy ) y que tiene un ángulo t , devuelve las ubicaciones de los dos puntos situados a lo largo de su recta perpendicular a la distancia de longitud .

matplotlib.bezier. get_parallels ( bezier2 , ancho ) [fuente] #

Dados los puntos de control cuadráticos de Bezier bezier2 , devuelve los puntos de control de las líneas cuadráticas de Bezier aproximadamente paralelas a la dada separadas por el ancho .

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

Retorna una función que verifica si un punto está en un círculo con centro ( cx , cy ) y radio r .

La función devuelta tiene la firma:

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

Al ser similar a get_parallels, devuelve puntos de control de dos líneas Bézier cuadráticas que tienen un ancho aproximadamente paralelo al uno dado separados por ancho .

matplotlib.bezier. split_bezier_intersecting_with_closedpath ( bezier , inside_closedpath , tolerancia = 0.01 ) [fuente] #

Divida una curva Bezier en dos en la intersección con una ruta cerrada.

Parámetros :
bezier (N, 2) en forma de matriz

Puntos de control del segmento Bezier. ver BezierSegment_

inside_closedpath invocable

Una función que devuelve True si un punto dado (x, y) está dentro del camino cerrado. Ver find_bezier_t_intersecting_with_closedpathtambién

flotador de tolerancia

La tolerancia para la intersección. Ver find_bezier_t_intersecting_with_closedpathtambién

Devoluciones :
izquierda derecha

Listas de puntos de control para los dos segmentos de Bezier.

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

Divida un segmento Bezier definido por sus puntos de control beta en dos segmentos separados divididos en t y devuelva sus puntos de control.

matplotlib.bezier. split_path_inout ( ruta , dentro , tolerancia = 0.01 , reorder_inout = False ) [fuente] #

Divide un camino en dos segmentos en el punto donde se convierte en Falso.inside(x, y)