matplotlib.bezier
¶
提供有关贝塞尔路径操作的一些实用函数的模块。
-
class
matplotlib.bezier.
BezierSegment
(control_points)[源代码]¶ 基类:
object
d维贝塞尔段。
参数: - control_points(N,d)数组
设备的位置 N 控制点。
-
axis_aligned_extrema
()[源代码]¶ 返回曲线内部极值的尺寸和位置。
极值是曲线上一个偏导数为零的点。
返回: - dimsint,数组类型
索引 \(i\) 在每个内部极值处为零的偏导数。
- dzeros浮点数,数组形式
与dims大小相同。这个 \(t\) 这样的话 \(d/dx_i B(t) = 0\)
-
property
control_points
¶ 曲线的控制点。
-
property
degree
¶ 多项式的次数。少一个控制点。
-
property
dimension
¶ 曲线的尺寸。
-
property
polynomial_coefficients
¶ 贝塞尔曲线的多项式系数。
警告
遵循与之相反的惯例
numpy.polyval
.返回: - float,(n+1,d)数组u-like
多项式基展开后的系数,其中 \(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\u i\]在哪里? \(P_i\) 是曲线的控制点。
-
exception
matplotlib.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。
- 否则为假。
-
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 小于给定值 容忍 .
参数: - bezier_point_at_t可赎回的
返回Bezier at参数的x,y坐标的函数 t . 必须有签名:
bezier_point_at_t(t: float) -> Tuple[float, float]
- inside_closedpath可赎回的
如果给定点(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_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 ,返回沿其垂直线位于 长度 .
-
matplotlib.bezier.
get_parallels
(bezier2, width)[源代码]¶ 给定二次Bezier控制点 贝塞尔2 ,返回二次贝塞尔线的控制点,这些控制点大致平行于用 宽度 .
-
matplotlib.bezier.
inside_circle
(cx, cy, r)[源代码]¶ 返回一个函数,该函数检查一个点是否在具有圆心的圆中( cx , cy )和半径 r .
返回的函数具有以下签名:
f(xy: Tuple[float, float]) -> bool
-
matplotlib.bezier.
make_path_regular
(p)[源代码]¶ [Deprecated] If the
codes
attribute ofPath
p is None, return a copy of p withcodes
set to (MOVETO, LINETO, LINETO, ..., LINETO); otherwise return p itself.笔记
3.3 版后已移除.
-
matplotlib.bezier.
make_wedged_bezier2
(bezier2, width, w1=1.0, wm=0.5, w2=0.0)[源代码]¶ 类似于get_parallels,返回两条二次Bezier线的控制点,这两条线的宽度大致平行于给定的一条线,由 宽度 .
-
matplotlib.bezier.
split_bezier_intersecting_with_closedpath
(bezier, inside_closedpath, tolerance=0.01)[源代码]¶ 在具有闭合路径的交点处将贝塞尔曲线拆分为两条。
参数: - bezier类数组(N,2)
贝塞尔段的控制点。看到了吗
BezierSegment
.- inside_closedpath可赎回的
如果给定点(x,y)在闭合路径内,则返回真的函数。另请参见
find_bezier_t_intersecting_with_closedpath
.- tolerance浮动
交叉点的公差。另请参见
find_bezier_t_intersecting_with_closedpath
.
返回: - 左、右
两个贝塞尔线段的控制点列表。