matplotlib.bezier
Модуль, предоставляющий некоторые служебные функции для манипулирования кривыми Безье.
-
class matplotlib.bezier.BezierSegment(control_points)[source] -
Базовые классы:
objectd-мерный сегмент кривой Безье.
Параметры: -
control_points(N, d) array -
Расположение N контрольных точек.
-
axis_aligned_extrema(self)[source] -
Возвращает размерность и положение экстремумов кривой, выровненных по осям.
Экстремумы — это точки вдоль кривой, где одна из её частных производных равна нулю.
Возвращает: -
dimsint, array_like -
Индекс \(i\) частной производной, которая равна нулю в каждом экстремуме.
-
dzerosfloat, array_like -
Массив того же размера, что и dims. Значение \(t\) такое, что \(d/dx_i B(t) = 0\)
-
-
property control_points -
Контрольные точки кривой.
-
property degree -
Степень полинома. На один меньше числа контрольных точек.
-
property dimension -
Размерность кривой.
-
point_at_t(self, t)[source] -
Вычисление значения кривой в одной точке t. Возвращает кортеж [float*d].
-
property polynomial_coefficients -
Коэффициенты полинома кривой Безье.
Предупреждение
Следует обратной конвенции по сравнению с
numpy.polyval.Возвращает: - float, (n+1, d) массив_подобный
-
Коэффициенты после разложения по полиномиальной основе, где \(n\) — степень кривой Безье, а \(d\) — её размерность. Это числа (\(C_j\)), такие что кривая может быть записана как \(\sum_{j=0}^n C_j t^j\).
Примечания
Коэффициенты вычисляются как
\[{n \choose j} \sum_{i=0}^j (-1)^{i+j} {j \choose i} P_i\]где \(P_i\) — контрольные точки кривой.
-
-
exception matplotlib.bezier.NonIntersectingPathException[source] -
Базовые классы:
ValueError
-
matplotlib.bezier.check_if_parallel(dx1, dy1, dx2, dy2, tolerance=1e-05)[source] -
Проверяет, параллельны ли две прямые.
Параметры: -
dx1, dy1, dx2, dy2float -
Градиенты dy/dx двух прямых.
-
tolerancefloat -
Угол допуска в радианах, до которого прямые считаются параллельными.
Возвращает: - is_parallel
-
- 1, если две прямые параллельны в одном направлении.
- -1, если две прямые параллельны в противоположном направлении.
- False в противном случае.
-
-
matplotlib.bezier.concatenate_paths(paths)[source] -
[Устарело] Объединяет список путей в один путь.
Примечания
Устарело начиная с версии 3.3.
-
matplotlib.bezier.find_bezier_t_intersecting_with_closedpath(bezier_point_at_t, inside_closedpath, t0=0.0, t1=1.0, tolerance=0.01)[source] -
Находит пересечение кривой Безье с замкнутым контуром.
Точка пересечения t аппроксимируется двумя параметрами t0, t1, такими что t0 <= t <= t1.
Поиск начинается с t0 и t1 и использует простой алгоритм бисекции, поэтому одна из конечных точек должна находиться внутри контура, а другая — нет. Поиск останавливается, когда расстояние между точками, параметризованными t0 и t1, становится меньше заданной tolerance.
Параметры: -
bezier_point_at_tcallable -
Функция, возвращающая координаты x, y кривой Безье в параметре t. Она должна иметь подпись:
bezier_point_at_t(t: float) -> Tuple[float, float]
-
inside_closedpathcallable -
Функция, возвращающая True, если заданная точка (x, y) находится внутри замкнутого контура. Она должна иметь подпись:
inside_closedpath(point: Tuple[float, float]) -> bool
-
t0, t1float -
Начальные параметры поиска.
-
tolerancefloat -
Максимальное допустимое расстояние между конечными точками.
Возвращает: -
t0, t1float -
Параметры пути кривой Безье.
-
-
matplotlib.bezier.find_control_points(c1x, c1y, mmx, mmy, c2x, c2y)[source] -
Находит контрольные точки кривой Безье, проходящей через (c1x, c1y), (mmx, mmy) и (c2x, c2y) в параметрических значениях 0, 0.5 и 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] -
Возвращает точку пересечения прямой, проходящей через (cx1, cy1) под углом t1, и прямой, проходящей через (cx2, cy2) под углом t2.
-
matplotlib.bezier.get_normal_points(cx, cy, cos_t, sin_t, length)[source] -
Для прямой, проходящей через (cx, cy) под углом t, возвращает расположения двух точек, расположенных вдоль перпендикулярной прямой на расстоянии length.
-
matplotlib.bezier.get_parallels(bezier2, width)[source] -
Принимая во внимание контрольные точки квадратного Безье bezier2, возвращает контрольные точки квадратных линий Безье, приблизительно параллельных данной, разделенные на width.
-
matplotlib.bezier.inside_circle(cx, cy, r)[source] -
Возвращает функцию, проверяющую, находится ли точка в окружности с центром (cx, cy) и радиусом r.
Возвращаемая функция имеет подпись:
f(xy: Tuple[float, float]) -> bool
-
matplotlib.bezier.make_path_regular(p)[source] -
[Устарело] Если атрибут
codesобъектаPathp равен None, возвращает копию p с атрибутомcodesустановленным в (MOVETO, LINETO, LINETO, ..., LINETO); в противном случае возвращает сам p.Примечания
Устарело начиная с версии 3.3.
-
matplotlib.bezier.make_wedged_bezier2(bezier2, width, w1=1.0, wm=0.5, w2=0.0)[source] -
Аналогично get_parallels, возвращает контрольные точки двух квадратичных кривых Безье, имеющих ширину, примерно параллельную заданной, разделенные на width.
-
matplotlib.bezier.split_bezier_intersecting_with_closedpath(bezier, inside_closedpath, tolerance=0.01)[source] -
Разделить кривую Безье на две части в точке пересечения с замкнутой кривой.
Параметры: -
bezierarray-like(N, 2) -
Контрольные точки сегмента Безье. См.
BezierSegment. -
inside_closedpathcallable -
Функция, возвращающая True, если заданная точка (x, y) находится внутри замкнутой кривой. См. также
find_bezier_t_intersecting_with_closedpath. -
tolerancefloat -
Допуск для пересечения. См. также
find_bezier_t_intersecting_with_closedpath.
Возвращает: - left, right
-
Списки контрольных точек для двух сегментов Безье.
-
-
matplotlib.bezier.split_de_casteljau(beta, t)[source] -
Разделить сегмент Безье, определенный его контрольными точками beta, на два отдельных сегмента, разделенных в точке t, и вернуть их контрольные точки.
-
matplotlib.bezier.split_path_inout(path, inside, tolerance=0.01, reorder_inout=False)[source] -
Разделить путь на два сегмента в точке, где
inside(x, y)становится False.
© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.3.3/api/bezier_api.html