Spec-Zone.ru › Matplotlib

matplotlib.bezier

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

classmatplotlib.bezier.BezierSegment(control_points)[исходный код]

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

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

Параметры:
control_pointsмассив размера (N, d)

Расположение N контрольных точек.

axis_aligned_extrema()[исходный код]

Возвращает размерности и положения внутренних экстремумов кривой.

Экстремумы — это точки на кривой, в которых одна из её частных производных равна нулю.

Возвращает:
dimsмассив целых чисел

Индекс \(i\) частной производной, равной нулю в каждой внутренней точке экстремума.

dzerosмассив чисел с плавающей точкой

Имеет тот же размер, что и dims. Значения \(t\), для которых \(d/dx_i B(t) = 0\)

propertycontrol_points

Контрольные точки кривой.

propertydegree

Степень полинома. На единицу меньше числа контрольных точек.

propertydimension

Размерность кривой.

point_at_t(t)[исходный код]

Вычисляет значение кривой в одной точке и возвращает кортеж из d чисел с плавающей точкой.

propertypolynomial_coefficients

Коэффициенты полинома кривой Безье.

Предупреждение

Используется соглашение, противоположное принятому в numpy.polyval.

Возвращает:
массив размера (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\) — контрольные точки кривой.

exceptionmatplotlib.bezier.NonIntersectingPathException[исходный код]

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

matplotlib.bezier.check_if_parallel(dx1, dy1, dx2, dy2, tolerance=1e-05)[исходный код]

Проверяет, параллельны ли две прямые.

Параметры:
dx1, dy1, dx2, dy2число с плавающей точкой

Угловые коэффициенты dy/dx двух прямых.

toleranceчисло с плавающей точкой

Допустимое угловое отклонение в радианах, при котором прямые считаются параллельными.

Возвращает:
is_parallel
  • 1, если прямые параллельны и направлены в одну сторону.
  • -1, если прямые параллельны и направлены в противоположные стороны.
  • False в противном случае.
matplotlib.bezier.find_bezier_t_intersecting_with_closedpath(bezier_point_at_t, inside_closedpath, t0=0.0, t1=1.0, tolerance=0.01)[исходный код]

Находит точку пересечения кривой Безье с замкнутым контуром.

Параметр точки пересечения t приближённо задаётся двумя параметрами t0, t1, такими что t0 <= t <= t1.

Поиск начинается с t0 и t1 и использует простой алгоритм деления пополам, поэтому одна из конечных точек должна находиться внутри контура, а другая — вне его. Поиск прекращается, когда расстояние между точками, заданными параметрами t0 и t1, становится меньше указанного значения tolerance.

Параметры:
bezier_point_at_tвызываемый объект

Функция, возвращающая координаты x, y точки кривой Безье для параметра t. Её сигнатура должна иметь вид:

bezier_point_at_t(t: float) -> tuple[float, float]
inside_closedpathвызываемый объект

Функция, возвращающая True, если заданная точка (x, y) находится внутри замкнутого контура. Её сигнатура должна иметь вид:

inside_closedpath(point: tuple[float, float]) -> bool
t0, t1число с плавающей точкой

Начальные параметры поиска.

toleranceчисло с плавающей точкой

Максимально допустимое расстояние между конечными точками.

Возвращает:
t0, t1число с плавающей точкой

Параметры кривой Безье.

matplotlib.bezier.find_control_points(c1x, c1y, mmx, mmy, c2x, c2y)[исходный код]

Находит контрольные точки кривой Безье, проходящей через точки (c1x, c1y), (mmx, mmy) и (c2x, c2y) при значениях параметра 0, 0.5 и 1.

matplotlib.bezier.get_cos_sin(x0, y0, x1, y1)[исходный код]
matplotlib.bezier.get_intersection(cx1, cy1, cos_t1, sin_t1, cx2, cy2, cos_t2, sin_t2)[исходный код]

Возвращает точку пересечения прямой, проходящей через (cx1, cy1) под углом t1, и прямой, проходящей через (cx2, cy2) под углом t2.

matplotlib.bezier.get_normal_points(cx, cy, cos_t, sin_t, length)[исходный код]

Для прямой, проходящей через (cx, cy) под углом t, возвращает координаты двух точек на перпендикулярной ей прямой, расположенных на расстоянии length.

matplotlib.bezier.get_parallels(bezier2, width)[исходный код]

По заданным контрольным точкам квадратичной кривой Безье bezier2 возвращает контрольные точки квадратичных кривых Безье, приблизительно параллельных заданной кривой и отстоящих от неё на width.

matplotlib.bezier.inside_circle(cx, cy, r)[исходный код]

Возвращает функцию, проверяющую, находится ли точка внутри окружности с центром (cx, cy) и радиусом r.

Возвращаемая функция имеет сигнатуру:

f(xy: tuple[float, float]) -> bool
matplotlib.bezier.make_wedged_bezier2(bezier2, width, w1=1.0, wm=0.5, w2=0.0)[исходный код]

Как и get_parallels, возвращает контрольные точки двух квадратичных кривых Безье, приблизительно параллельных заданной кривой и отстоящих от неё на width.

matplotlib.bezier.split_bezier_intersecting_with_closedpath(bezier, inside_closedpath, tolerance=0.01)[исходный код]

Разделяет кривую Безье на две части в точке пересечения с замкнутым контуром.

Параметры:
bezierобъект, подобный массиву размера (N, 2)

Контрольные точки сегмента кривой Безье. См. BezierSegment.

inside_closedpathвызываемый объект

Функция, возвращающая True, если заданная точка (x, y) находится внутри замкнутого контура. См. также find_bezier_t_intersecting_with_closedpath.

toleranceчисло с плавающей точкой

Допуск для точки пересечения. См. также find_bezier_t_intersecting_with_closedpath.

Возвращает:
left, right

Списки контрольных точек двух сегментов кривой Безье.

matplotlib.bezier.split_de_casteljau(beta, t)[исходный код]

Разделяет сегмент кривой Безье, заданный контрольными точками beta, на два сегмента в точке t и возвращает их контрольные точки.

matplotlib.bezier.split_path_inout(path, inside, tolerance=0.01, reorder_inout=False)[исходный код]

Разделяет контур на два сегмента в точке, где inside(x, y) становится False.

© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/bezier_api.html

Spec-Zone.ru

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