Bitbybit Docs
    Preparing search index...

    Class MathBitByBit

    对普通数值的算术、舍入、范围、随机数和三角函数。三角函数接受并返回以弧度为单位的角度;degToRadradToDeg 在边界处转换,因为用户输入的几乎每个角度都是度。插值辅助函数(lerpremapeasesmoothsteppingPong)是动画和参数化变化的基本构件。

    Index

    Constructors

    basics

    • 将两个数相加。

      示例:5 和 3 -> 8,-2 和 7 -> 5

      Parameters

      Returns number

      两者之和

      const sum = bitbybit.math.add({ first: 5, second: 3 });
      
    • 用第一个数减去第二个数。

      示例:10 和 3 -> 7,5 和 8 -> -3

      Parameters

      Returns number

      两者之差

      const difference = bitbybit.math.subtract({ first: 10, second: 3 });
      
    • 将两个数相乘。

      示例:5 和 3 -> 15,-2 和 4 -> -8

      Parameters

      Returns number

      两者之积

      const product = bitbybit.math.multiply({ first: 5, second: 3 });
      
    • 用第一个数除以第二个数。

      除以 0 给出 Infinity,与 JavaScript 中相同。 示例:10 和 2 -> 5,7 和 2 -> 3.5

      Parameters

      Returns number

      两者之商

      const quotient = bitbybit.math.divide({ first: 7, second: 2 });
      
    • 求第一个数的第二个数次方。

      示例:2 的 3 次方 -> 8,5 的 2 次方 -> 25,10 的 -1 次方 -> 0.1

      Parameters

      Returns number

      const cube = bitbybit.math.power({ first: 2, second: 3 });
      
    • 求数值的平方根。

      负数给出 NaN。 示例:9 -> 3,2 -> 1.414

      Parameters

      Returns number

      平方根

    • 去掉数值的符号,因此结果永远不为负。

      示例:-5 -> 5,3 -> 3,0 -> 0

      Parameters

      Returns number

      绝对值

    • 将数值舍入到最近的整数;一半向上舍入。

      示例:3.7 -> 4,2.3 -> 2,5.5 -> 6

      Parameters

      Returns number

      最接近的整数

    • 将数值向下舍入到其下方的整数。

      示例:3.7 -> 3,-2.3 -> -3,5 -> 5

      Parameters

      Returns number

      向下取整的整数

    • 将数值向上舍入到其上方的整数。

      示例:3.2 -> 4,-2.8 -> -2,5 -> 5

      Parameters

      Returns number

      向上取整的整数

    • 翻转数值的符号。

      示例:5 -> -5,-3 -> 3,0 -> 0

      Parameters

      Returns number

      符号相反的数值

    • 求数值的自然对数:e 必须取多少次方才得到该数。

      示例:2.718 -> 约 1,1 -> 0

      Parameters

      Returns number

      自然对数

    • 求数值以 10 为底的对数:10 必须取多少次方才得到该数。

      示例:100 -> 2,1000 -> 3,10 -> 1

      Parameters

      Returns number

      以 10 为底的对数

    • 求 10 的数值次方。

      示例:2 -> 100,3 -> 1000,-1 -> 0.1

      Parameters

      Returns number

      10 的该次幂

    • 求以弧度给出的角的正弦。

      示例:0 -> 0,pi/2 -> 1

      Parameters

      • inputs: NumberDto

        以弧度为单位的角度

      Returns number

      正弦值,介于 -1 和 1 之间

    • 求以弧度给出的角的余弦。

      示例:0 -> 1,pi -> -1

      Parameters

      • inputs: NumberDto

        以弧度为单位的角度

      Returns number

      余弦值,介于 -1 和 1 之间

    • 求以弧度给出的角的正切。

      示例:0 -> 0,pi/4 -> 约 1

      Parameters

      • inputs: NumberDto

        以弧度为单位的角度

      Returns number

      正切值

    • 求正弦为给定数值的角,以弧度表示。

      示例:0 -> 0,1 -> pi/2(约 1.57)

      Parameters

      • inputs: NumberDto

        介于 -1 和 1 之间的数值

      Returns number

      以弧度为单位的角度

    • 求余弦为给定数值的角,以弧度表示。

      示例:1 -> 0,-1 -> pi(约 3.14)

      Parameters

      • inputs: NumberDto

        介于 -1 和 1 之间的数值

      Returns number

      以弧度为单位的角度

    • 求正切为给定数值的角,以弧度表示。

      示例:0 -> 0,1 -> pi/4(约 0.785)

      Parameters

      Returns number

      以弧度为单位的角度,介于 -pi/2 和 pi/2 之间

    • 求 e(自然对数的底)的数值次方。

      示例:0 -> 1,1 -> 约 2.718,2 -> 约 7.389

      Parameters

      Returns number

      e 的该次幂

    • 将角度从度转换为弧度。

      示例:180 -> pi(约 3.14159),90 -> pi/2

      Parameters

      Returns number

      以弧度为单位的角度

    • 将角度从弧度转换为度。

      示例:pi -> 180,pi/2 -> 90

      Parameters

      • inputs: NumberDto

        以弧度为单位的角度

      Returns number

      以度为单位的角度

    create

    • 原样传递数值,使一个值可以被命名并重用。

      示例:42 -> 42

      Parameters

      Returns number

      同一个数值

    generate

    • 给出从 0 到 1(不含)的随机数。

      示例:0.342、0.891 或该范围内的任何其他值

      Returns number

      0 到 1 之间的随机数

    • 给出 lowhigh 之间的随机数。

      示例:low 0,high 10 -> 3.7、8.2 或两者之间的任何其他值

      Parameters

      Returns number

      范围内的随机数

      const value = bitbybit.math.randomNumber({ low: 0, high: 10 });
      
    • 给出 lowhigh 之间的随机数列表。

      示例:low 0,high 10,count 3 -> [2.5, 7.1, 4.8]

      Parameters

      Returns number[]

      随机数

      const values = bitbybit.math.randomNumbers({ low: 0, high: 10, count: 3 });
      
    • 给出常数 pi,即圆的周长与直径之比。

      示例:3.141592653589793

      Returns number

      数值 pi

    operations

    • 对两个数值应用一种算术运算:加、减、乘、除、幂或取模。

      运算按 first 然后 second 读取:减给出 first 减 second,幂给出 first 的 second 次方。 示例:5 加 3 -> 8,10 取模 3 -> 1,2 幂 3 -> 8

      Parameters

      Returns number

      运算的结果

      const result = bitbybit.math.twoNrOperation({ first: 2, second: 3, operation: Bit.Inputs.Math.mathTwoNrOperatorEnum.power });
      
    • 求一个数除以另一个数后的余数。

      符号跟随第一个数,与 JavaScript 中相同。 示例:10 取模 3 -> 1,17 取模 5 -> 2

      Parameters

      Returns number

      余数

      const remainder = bitbybit.math.modulus({ number: 17, modulus: 5 });
      
    • 将数值舍入到给定的小数位数。

      示例:1.32156 舍入到 3 位 -> 1.322

      Parameters

      Returns number

      舍入后的数值

      const rounded = bitbybit.math.roundToDecimals({ number: 1.32156, decimalPlaces: 3 });
      
    • 将数值舍入到给定的小数位数,并去掉末尾的零。

      作为数值,结果本来就不能带有末尾的零;与 roundToDecimals 的区别在于,像 1.320000001 这样的浮点噪声会被清理为 1.32。 示例:1.32156 舍入到 3 位 -> 1.322,1.320000001 -> 1.32,1.000 -> 1

      Parameters

      Returns number

      舍入后的数值

      const clean = bitbybit.math.roundAndRemoveTrailingZeros({ number: 1.320000001, decimalPlaces: 3 });
      
    • 对单个数值应用一种运算:绝对值、取反、平方根、舍入、对数、三角函数及其反函数、指数,或弧度与度之间的转换。

      三角函数以弧度工作。 示例:5 的 sqrt -> 2.236,-3 的绝对值 -> 3

      Parameters

      Returns number

      运算的结果

      const root = bitbybit.math.oneNrOperation({ number: 5, operation: Bit.Inputs.Math.mathOneNrOperatorEnum.sqrt });
      
    • 将数值从一个范围映射到另一个范围,保持其相对位置。

      源范围之外的数值按比例映射到目标范围之外。 示例:5 从 [0,10] 到 [0,100] -> 50,0.5 从 [0,1] 到 [-10,10] -> 0

      Parameters

      • inputs: RemapNumberDto

        数值、它所在的范围和要映射到的范围

      Returns number

      目标范围内相同相对位置处的数值

      const percent = bitbybit.math.remap({ number: 5, fromLow: 0, fromHigh: 10, toLow: 0, toHigh: 100 });
      
    • 将数值格式化为具有固定小数位数的文本,保留末尾的零。

      示例:3.14159 取 2 位 -> '3.14',5 取 3 位 -> '5.000'

      Parameters

      • inputs: ToFixedDto

        数值和要显示的小数位数

      Returns string

      格式化后的文本

      const label = bitbybit.math.toFixed({ number: 3.14159, decimalPlaces: 2 });
      
    • 沿缓动曲线将 0 到 1 的值映射到 minmax 的范围,使结果加速或减速而不是均匀变化。

      easeIn 曲线慢速开始,easeOut 曲线慢速结束,easeInOut 曲线两者兼有。 示例:0.5 从 [0,100] 用 easeInQuad -> 25

      Parameters

      • inputs: EaseDto

        介于 0 和 1 之间的值、目标范围和缓动曲线

      Returns number

      目标范围内缓动后的值

      const eased = bitbybit.math.ease({ x: 0.5, min: 0, max: 100, ease: Bit.Inputs.Math.easeEnum.easeInQuad });
      
    • 将数值限制在范围内:低于 min 变成 min,高于 max 变成 max

      示例:5 在 [0,3] 中 -> 3,-1 在 [0,3] 中 -> 0,1.5 在 [0,3] 中 -> 1.5

      Parameters

      • inputs: ClampDto

        数值和要保持在其内的范围

      Returns number

      限制在范围内的数值

      const limited = bitbybit.math.clamp({ number: 5, min: 0, max: 3 });
      
    • 按分数 t 从起始值混合到结束值:0 给出起始值,1 给出结束值,0.5 给出中点。

      0 到 1 之外的 t 外推到两端之外。 示例:0 到 100 取 0.5 -> 50,10 到 20 取 0.25 -> 12.5

      Parameters

      • inputs: LerpDto

        起始值、结束值和比例

      Returns number

      混合后的值

      const mid = bitbybit.math.lerp({ start: 10, end: 20, t: 0.25 });
      
    • 以分数求出值在起点和终点之间的位置:即 lerp 生成该值所需的 t

      示例:5 在 [0,10] 中 -> 0.5,2.5 在 [0,10] 中 -> 0.25

      Parameters

      Returns number

      从起始到结束的比例

      const fraction = bitbybit.math.inverseLerp({ start: 0, end: 10, value: 2.5 });
      
    • 将 0 到 1 的值变成起止都平缓的光滑 S 形曲线;值先被限制在该范围内。

      示例:0 -> 0,0.5 -> 0.5,0.25 -> 0.156

      Parameters

      • inputs: NumberDto

        介于 0 和 1 之间的值

      Returns number

      介于 0 和 1 之间的平滑值

    • 给出数值的符号:负数为 -1,零为 0,正数为 1。

      示例:-5 -> -1,0 -> 0,3.14 -> 1

      Parameters

      Returns number

      1、0 或 1

    • 保留数值小数点后的部分,从其下方的整数向上度量,因此结果总是从 0 到 1(不含)。

      示例:3.14 -> 0.14,-2.3 -> 0.7

      Parameters

      Returns number

      小数部分,从 0 到 1(不含 1)

    • 将数值回绕到范围内使其循环:超过 max 时从 min 重新进入,低于 min 时从 max 重新进入。

      适用于角度和重复图案;与普通取模不同,它能处理负数。 示例:1.5 在 [0,1) 中 -> 0.5,-0.3 在 [0,1) 中 -> 0.7,370 在 [0,360) 中 -> 10

      Parameters

      • inputs: WrapDto

        数值和要回绕到的范围

      Returns number

      回绕后的数值,从 min 到 max(不含 max)

      const angle = bitbybit.math.wrap({ number: 370, min: 0, max: 360 });
      
    • 随着 t 增长使值在 0 和 length 之间来回反弹:升到 length,再降回 0,如此往复。

      示例:length 1,t 0.5 -> 0.5,t 1 -> 1,t 1.5 -> 0.5,t 2 -> 0

      Parameters

      Returns number

      介于 0 和 length 之间的往返值

      const bounce = bitbybit.math.pingPong({ t: 1.5, length: 1 });
      
    • 使值朝目标移动最多 maxDelta,不会越过目标。

      示例:0 朝 10 移动 3 -> 3,8 朝 10 移动 3 -> 10

      Parameters

      Returns number

      移动一步后的值

      const next = bitbybit.math.moveTowards({ current: 8, target: 10, maxDelta: 3 });
      
    • 计算以文本书写的简单算术表达式:数值、+、-、乘号、/、括号和空格。

      表达式由本库自行解析和计算,从不交给 JavaScript 引擎运行,因此对用户键入的文本是安全的。 示例:用乘号书写的 '(3+2) 乘 4' -> 20,'10/3' -> 3.3333

      Parameters

      Returns number

      计算得到的值

      const value = bitbybit.math.evalArithmetic({ expression: "(3 + 2) * 4" });