matplotlib.bezier#

Um módulo que fornece algumas funções utilitárias relacionadas à manipulação do caminho de Bezier.

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

Bases:object

Um segmento de Bezier d-dimensional.

Parâmetros :
matriz de pontos de controle (N, d)

Localização dos N pontos de controle.

axis_aligned_extrema ( ) [fonte] #

Retorne a dimensão e a localização dos extremos internos da curva.

Os extremos são os pontos ao longo da curva onde uma de suas derivadas parciais é zero.

Devoluções :
dims array de int

Índice\(i\)da derivada parcial que é zero em cada extremo interior.

matriz dzeros de float

Do mesmo tamanho que dims. o\(t\)de tal modo que\(d/dx_i B(t) = 0\)

propriedade control_points #

Os pontos de controle da curva.

grau de propriedade #

Grau do polinômio. Um a menos o número de pontos de controle.

dimensão da propriedade #

A dimensão da curva.

point_at_t ( t ) [fonte] #

Avalie a curva em um único ponto, retornando uma tupla de d floats.

propriedade polinomial_coeficientes #

Os coeficientes polinomiais da curva de Bezier.

Aviso

Segue convenção oposta de numpy.polyval.

Devoluções :
(n+1, d) matriz

Coeficientes depois de expandir em base polinomial, onde\(n\) é o grau da curva de Bezier e\(d\)sua dimensão. Estes são os números (\(C_j\)) tal que a curva pode ser escrita\(\sum_{j=0}^n C_j t^j\).

Notas

Os coeficientes são calculados como

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

Onde\(P_i\)são os pontos de controle da curva.

exceção matplotlib.bezier. NonIntersectingPathException [fonte] #

Bases:ValueError

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

Verifique se duas retas são paralelas.

Parâmetros :
dx1, dy1, dx2, dy2 flutuam

Os gradientes dy / dx das duas linhas.

folga de tolerância

A tolerância angular em radianos até a qual as linhas são consideradas paralelas.

Devoluções :
is_parallel
  • 1 se duas retas são paralelas na mesma direção.

  • -1 se duas linhas são paralelas em direções opostas.

  • Falso caso contrário.

matplotlib.bezier. find_bezier_t_intersecting_with_closedpath ( bezier_point_at_t , inside_closedpath , t0 = 0,0 , t1 = 1,0 , tolerância = 0,01 ) [fonte] #

Encontre a interseção da curva de Bezier com um caminho fechado.

O ponto de intersecção t é aproximado por dois parâmetros t0 , t1 tal que t0 <= t <= t1 .

A pesquisa começa em t0 e t1 e usa um algoritmo de bisseção simples, portanto, um dos pontos finais deve estar dentro do caminho, enquanto o outro não. A busca termina quando a distância dos pontos parametrizados por t0 e t1 fica menor que a tolerância dada .

Parâmetros :
bezier_point_at_t chamável

Uma função que retorna as coordenadas x, y do Bezier no parâmetro t . Deve conter a assinatura:

bezier_point_at_t(t: float) -> tuple[float, float]
inside_closedpath chamável

Uma função que retorna True se um determinado ponto (x, y) está dentro do caminho fechado. Deve conter a assinatura:

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

Iniciar parâmetros para a pesquisa.

folga de tolerância

Distância máxima permitida entre os pontos finais.

Devoluções :
t0, t1 flutuante

Os parâmetros do caminho Bezier.

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

Encontre os pontos de controle da curva de Bezier passando por ( c1x , c1y ), ( mmx , mmy ) e ( c2x , c2y ), nos valores paramétricos 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] #

Retorne a interseção entre a linha que passa por ( cx1 , cy1 ) no ângulo t1 e a linha que passa por ( cx2 , cy2 ) no ângulo t2 .

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

Para uma linha passando por ( cx , cy ) e tendo um ângulo t , retorne as localizações dos dois pontos localizados ao longo de sua linha perpendicular na distância de comprimento .

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

Dados os pontos de controle quadráticos de Bezier bezier2 , retorna os pontos de controle das linhas quadráticas de Bezier aproximadamente paralelas a uma determinada separadas por largura .

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

Retorna uma função que verifica se um ponto está em um círculo com centro ( cx , cy ) e raio r .

A função retornada tem a assinatura:

f(xy: tuple[float, float]) -> bool
matplotlib.bezier. make_wedged_bezier2 ( bezier2 , largura , w1 = 1,0 , wm = 0,5 , w2 = 0,0 ) [fonte] #

Sendo semelhante a get_parallels, retorna pontos de controle de duas linhas quadráticas de Bezier com uma largura aproximadamente paralela a uma dada separada por width .

matplotlib.bezier. split_bezier_intersecting_with_closedpath ( bezier , inside_closedpath , tolerância = 0,01 ) [fonte] #

Divida uma curva de Bezier em duas na interseção com um caminho fechado.

Parâmetros :
bezier (N, 2) tipo matriz

Pontos de controle do segmento Bezier. Veja BezierSegment.

inside_closedpath chamável

Uma função que retorna True se um determinado ponto (x, y) estiver dentro do caminho fechado. Veja também find_bezier_t_intersecting_with_closedpath.

folga de tolerância

A tolerância para a interseção. Veja também find_bezier_t_intersecting_with_closedpath.

Devoluções :
esquerda direita

Listas de pontos de controle para os dois segmentos de Bezier.

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

Divida um segmento de Bezier definido por seus pontos de controle beta em dois segmentos separados divididos em t e retorne seus pontos de controle.

matplotlib.bezier. split_path_inout ( caminho , interior , tolerância = 0,01 , reorder_inout = False ) [fonte] #

Divida um caminho em dois segmentos no ponto onde se torna Falso.inside(x, y)