line

class janim.items.geometry.line.Cmpt_VPoints_LineImpl(*args, **kwargs)

基类:Cmpt_VPoints, Generic

在线段中,对 Cmpt_VPoints 的进一步实现

copy() Self
become(other: Cmpt_VPoints_LineImpl) Self
not_changed(other) bool
put_start_and_end_on(start: Vect, end: Vect) Self

通过旋转和缩放,使得物件的起点和终点被置于 startend

update_by_attrs(start: ndarray | None = None, end: ndarray | None = None, buff: float | None = None, path_arc: float | None = None) Self
update_points_by_attrs(*args, **kwargs) Self
set_buff(buff: float) Self
set_path_arc(path_arc: float) Self
set_start_and_end(start: SupportsPointify, end: SupportsPointify) Self
static pointify_start_and_end(start: SupportsPointify, end: SupportsPointify) tuple[ndarray, ndarray]
static pointify(item_or_data_or_point: SupportsPointify, direction: Vect | None = None) ndarray

Take an argument passed into Line (or subclass) and turn it into a 3d point.

property vector: ndarray
property unit_vector: ndarray
property angle: float
get_projection(point: Vect) ndarray

Return projection of a point onto the line

get_slope() float
set_angle(angle: float, about_point: Vect | None = None) Self
set_length(length: float, **kwargs)
property length: float
property arc_length: float
class janim.items.geometry.line.Line(start: Vect | Points = array([-1., 0., 0.]), end: Vect | Points = array([1., 0., 0.]), *, buff: float = 0, path_arc: float = 0, **kwargs)

基类:VItem

线段

传入 start, end 为线段起点终点

  • buff: 线段两端的空余量,默认为 0

  • path_arc: 表示线段的弯曲角度

points
class janim.items.geometry.line.Cmpt_VPoints_DashedLineImpl(*args, **kwargs)

基类:Cmpt_VPoints_LineImpl, Generic

在虚线中,对 Cmpt_VPoints 的进一步实现

get_start() ndarray

得到 points 的第一个点

get_end() ndarray

得到 points 的最后一个点

class janim.items.geometry.line.DashedLine(start: Vect | Points = array([-1., 0., 0.]), end: Vect | Points = array([1., 0., 0.]), *, dash_length: float = 0.1, dashed_ratio: float = 0.5, **kwargs)

基类:Line, Group[VItem]

虚线

  • dash_length: 每段虚线的长度

  • dashed_ratio: 虚线段的占比,默认为 0.5,即虚线段与空白段长度相等,但可能因为虚线段描边存在粗细而导致视觉上空白长度略小

class janim.items.geometry.line.TangentLine(vitem: VItem, alpha: float, length: float = 1, *, d_alpha: float = 1e-06, **kwargs)

基类:Line

切线

  • 传入 vitem 表示需要做切线的物件,alpha 表示切点在 vitem 上的比例

  • length: 切线长度

  • d_alpha: 精细程度,越小越精细(默认 1e-6

class janim.items.geometry.line.Elbow(width: float = 0.2, angle: float = 0, **kwargs)

基类:MarkedItem, VItem

折线(一般用作直角符号)

  • width 表示宽度

  • angle 表示角度

class janim.items.geometry.line.Angle(line1: Line, line2: Line, radius: float | None = None, quadrant: AngleQuadrant = (1, 1), other_angle: bool = False, dot: bool = False, dot_radius: float | None = None, dot_distance: float = 0.55, dot_color: JAnimColor = '#FFFFFF', elbow: bool = False, **kwargs)

基类:MarkedItem, VItem

一个圆弧或直角标记对象,用于表示两条线之间的夹角

  • radius: 圆弧的半径

  • quadrant:
    由两个整数构成的序列,用于确定应使用哪一个象限为基准;
    第一个值表示在第一条线上以终点(1)或起点(-1)为基准,第二个值同理作用于第二条线;
    可选值包括: (1, 1), (1, -1), (-1, 1), (-1, -1)
  • other_angle:
    在两个可能的夹角之间切换。默认 False,则弧线从 line1line2 按逆时针绘制;
    如果为 True,则按顺时针方向绘制
  • dot: 是否在弧线上添加一个点,通常用于指示直角

  • dot_radius: 点的半径,默认为弧半径的 1/10

  • dot_distance: 点到圆心的相对距离,其中 0 表示在圆心处,1 表示在圆弧上,默认为 0.55

  • dot_color: 点的颜色

  • elbow: 是否使用直角标记的形式,参考 RightAngle

get_lines() Group

返回一个包含构成该角的两个 LineGroup 对象

get_value(degrees: bool = False) float

获取该角的数值

  • degrees: 是否以角度的形式返回,默认为 False,即弧度制

static from_three_points(A: Vect, B: Vect, C: Vect, **kwargs) Angle

由三点构造一个角,表示 ∠ABC,点 B 为角的顶点

class janim.items.geometry.line.RightAngle(line1: Line, line2: Line, length: float | None = None, **kwargs)

基类:Angle

一个用于表示直角的 Elbow 样式的对象(L 形折角)

  • length: 直角标记的边长