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.
- 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_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.