Spec-Zone.ru › Matplotlib 3.3

matplotlib.bezier

Модуль, предоставляющий некоторые служебные функции для манипулирования кривыми Безье.

class matplotlib.bezier.BezierSegment(control_points) [source]

Базовые классы: object

d-мерный сегмент кривой Безье.

Параметры:
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 объекта Path p равен None, возвращает копию p с атрибутом codes установленным в (MOVETO, LINETO, LINETO, ..., LINETO); в противном случае возвращает сам p.

Примечания

Устарело начиная с версии 3.3.

END_OF_DOCUMENT_MARKER
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API