Bitbybit Docs
    Preparing search index...

    Class Line

    两点之间的直线,以形如 { start, end } 的普通对象保存,以及同一事物的线段形式 [start, end]。这里的方法构建直线,测量和变换它们,在两种形式之间转换,沿直线放置点,以及查找两条直线的交点。长度以模型单位表示。

    Index

    Constructors

    convert

    • 将直线对象转为其线段形式,即点对 [start, end]

      示例:{ start: [0,0,0], end: [10,5,0] } -> [[0,0,0], [10,5,0]]

      Parameters

      Returns Segment3

      线段

    • 将每个直线对象转为其线段形式,即点对 [start, end]

      示例:三条直线 -> 三条线段,顺序相同

      Parameters

      Returns Segment3[]

      每条直线一条线段

    • 将线段(点对 [start, end])转为直线对象。

      示例:[[0,0,0], [10,5,0]] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      Returns Line3

      直线

    • 将每条线段(点对 [start, end])转为直线对象。

      示例:三条线段 -> 三条直线,顺序相同

      Parameters

      Returns Line3[]

      每条线段一条直线

    create

    • 由起点和终点构建直线对象。

      示例:起点 [0,0,0],终点 [10,5,0] -> { start: [0,0,0], end: [10,5,0] }

      Parameters

      Returns Line3

      直线对象

      const line = bitbybit.line.create({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • 由起点和终点构建线段,即直线的点对形式。

      示例:起点 [0,0,0],终点 [10,5,0] -> [[0,0,0], [10,5,0]]

      Parameters

      Returns Segment3

      [start, end] 表示的线段

      const segment = bitbybit.line.createSegment({ start: [0, 0, 0], end: [10, 5, 0] });
      
    • 用直线将每个点连到下一个点,使点列表成为一串直线。

      示例:[[0,0,0], [5,0,0], [5,5,0]] -> 两条直线,[0,0,0] 到 [5,0,0] 和 [5,0,0] 到 [5,5,0]

      Parameters

      Returns Line3[]

      每对相邻点一条直线

      const chain = bitbybit.line.linesBetweenPoints({ points: [[0, 0, 0], [5, 0, 0], [5, 5, 0]] });
      
    • 将每个起点与同一位置的终点配对,并用直线连接它们。

      两点重合的一对不生成直线,被省略。 示例:起点 [[0,0,0], [5,0,0]] 和终点 [[0,5,0], [5,5,0]] -> 两条直线

      Parameters

      Returns Line3[]

      每对点一条直线,跳过长度为 0 的点对

      const rungs = bitbybit.line.linesBetweenStartAndEndPoints({
      startPoints: [[0, 0, 0], [5, 0, 0]],
      endPoints: [[0, 5, 0], [5, 5, 0]],
      });

    get

    • 测量从直线起点到终点的直线距离。

      示例:{ start: [0,0,0], end: [3,4,0] } -> 5

      Parameters

      Returns number

      以模型单位表示的长度

    • 找出直线上某一分数位置处的点:0 给出起点,1 给出终点,0.5 给出中点。

      0 到 1 之外的分数延伸到端点之外。 示例:{ start: [0,0,0], end: [10,0,0] } 取 0.5 -> [5,0,0]

      Parameters

      Returns Point3

      直线上的点

      const middle = bitbybit.line.getPointOnLine({ line: { start: [0, 0, 0], end: [10, 0, 0] }, param: 0.5 });
      

    intersection

    • 找出两条直线相交的点。

      打开 checkSegmentsOnly 时,交点必须位于两条线段之内;关闭时直线无限延伸。平行的直线、互不相交而错过的直线以及彼此够不到的线段给出 undefined。容差决定多近算作相交。 示例:[0,0,0] 到 [10,0,0] 和 [5,-5,0] 到 [5,5,0] -> [5,0,0]

      Parameters

      Returns Point3

      交点,没有交点时为 undefined

      const crossing = bitbybit.line.lineLineIntersection({
      line1: { start: [0, 0, 0], end: [10, 0, 0] },
      line2: { start: [5, -5, 0], end: [5, 5, 0] },
      checkSegmentsOnly: true,
      tolerance: 1e-6,
      });

    operations

    • 交换直线的起点和终点,使其反向。

      示例:{ start: [0,0,0], end: [10,5,0] } -> { start: [10,5,0], end: [0,0,0] }

      Parameters

      Returns Line3

      一条方向相反的新直线

    transforms

    • 对直线的两端应用一个变换矩阵,或按顺序应用一个矩阵列表。

      示例:{ start: [0,0,0], end: [10,0,0] } 移动 [5,5,0] -> { start: [5,5,0], end: [15,5,0] }

      Parameters

      Returns Line3

      端点经过变换的新直线

      const moved = bitbybit.line.transformLine({
      line: { start: [0, 0, 0], end: [10, 0, 0] },
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 5, 0] }),
      });
    • 对每条直线应用不同的变换:第一个变换用于第一条直线,依此类推。

      示例:三条直线配三个平移 -> 每条直线按自己的平移移动

      Parameters

      Returns Line3[]

      变换后的直线,顺序相同

      const placed = bitbybit.line.transformsForLines({
      lines: [{ start: [0, 0, 0], end: [1, 0, 0] }, { start: [0, 0, 0], end: [0, 1, 0] }],
      transformation: bitbybit.transforms.translationsXYZ({ translations: [[0, 1, 0], [0, 2, 0]] }),
      });