matplotlib.bezier
#
一个提供一些关于贝塞尔路径操作的实用功能的模块。
- 类 matplotlib.bezier。BezierSegment ( control_points ) [来源] #
基地:
object
d 维贝塞尔线段。
- 参数:
- control_points (N, d) 数组
N个控制点的位置。
- axis_aligned_extrema ( ) [来源] #
返回曲线内部极值的尺寸和位置。
极值是沿曲线的点,其中一个偏导数为零。
- 返回:
- 调暗int 数组
指数\(i\)在每个内部极值处为零的偏导数。
- dzeros浮点数组
与dims大小相同。这\(t\)这样\(d/dx_i B(t) = 0\)
- 属性 控制点#
曲线的控制点。
- 财产 学位#
多项式的次数。控制点数少一。
- 属性 维度#
曲线的尺寸。
- 属性 polynomial_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\)是曲线的控制点。
- 异常 matplotlib.bezier。NonIntersectingPathException [来源] #
基地:
ValueError
- matplotlib.bezier。check_if_parallel ( dx1 , dy1 , dx2 , dy2 ,容差= 1e-05 ) [来源] #
检查两条线是否平行。
- 参数:
- dx1, dy1, dx2, dy2浮点数
两条线的梯度dy / dx。
- 公差浮动
以弧度为单位的角度公差,线被认为是平行的。
- 返回:
- 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可调用
返回参数t处贝塞尔曲线的 x、y 坐标的函数。它必须有签名:
bezier_point_at_t(t: float) -> tuple[float, float]
- inside_closedpath可调用
如果给定点 (x, y) 在闭合路径内,则函数返回 True。它必须有签名:
inside_closedpath(point: tuple[float, float]) -> bool
- t0, t1浮动
搜索的启动参数。
- 公差浮动
最终点之间的最大允许距离。
- 返回:
- t0, t1浮动
贝塞尔路径参数。
- matplotlib.bezier。find_control_points ( c1x , c1y , mmx , mmy , c2x , c2y ) [来源] #
在参数值 0、0.5 和 1 处查找通过 ( c1x , c1y )、( mmx , mmy ) 和 ( c2x , c2y ) 的 Bezier 曲线的控制点。
- matplotlib.bezier。get_intersection ( cx1 , cy1 , cos_t1 , sin_t1 , cx2 , cy2 , cos_t2 , sin_t2 ) [来源] #
返回以角度t1通过 ( cx1 , cy1 ) 的线与以角度t2通过 ( cx2 , cy2 )的线之间的交点。
- matplotlib.bezier。get_normal_points ( cx , cy , cos_t , sin_t , length ) [来源] #
对于通过 ( cx , cy ) 并具有角度t的线,返回沿其垂线位于length距离处的两点的位置。
- matplotlib.bezier。get_parallels ( bezier2 , width ) [来源] #
给定二次贝塞尔控制点bezier2,返回大致平行于由宽度分隔的给定的二次贝塞尔线的控制点。
- matplotlib.bezier。inside_circle ( cx , cy , r ) [来源] #
返回一个函数,该函数检查一个点是否在一个圆心 ( cx , cy ) 和半径为r的圆中。
返回的函数具有签名:
f(xy: tuple[float, float]) -> bool
- matplotlib.bezier。make_wedged_bezier2 ( bezier2 ,宽度, 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 ) [source] #
在与闭合路径的交叉点处将贝塞尔曲线一分为二。
- 参数:
- 贝塞尔(N, 2) 类数组
贝塞尔线段的控制点。见
BezierSegment
。- inside_closedpath可调用
如果给定点 (x, y) 在闭合路径内,则函数返回 True。另请参阅
find_bezier_t_intersecting_with_closedpath
。- 公差浮动
交点的容差。另请参阅
find_bezier_t_intersecting_with_closedpath
。
- 返回:
- 左右
两个贝塞尔线段的控制点列表。