Bitbybit Docs
    Preparing search index...

    Class MathBitByBit

    Арифметика, округление, диапазоны, случайные числа и тригонометрические функции на простых числах. Тригонометрические функции принимают и возвращают углы в радианах; degToRad и radToDeg конвертируют на границе, потому что почти каждый угол, который вводит пользователь, задан в градусах. Помощники интерполяции (lerp, remap, ease, smoothstep, pingPong) - строительные блоки анимации и параметрической вариации.

    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

      • inputs: TwoNumbersDto

        Число, из которого вычитать, и число, которое вычитать

      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

      • inputs: TwoNumbersDto

        Делимое число и число, на которое делить

      Returns number

      Их частное

      const quotient = bitbybit.math.divide({ first: 7, second: 2 });
      
    • Возводит первое число в степень второго.

      Пример: 2 в степени 3 -> 8, 5 в степени 2 -> 25, 10 в степени -1 -> 0.1

      Parameters

      • inputs: TwoNumbersDto

        Основание и показатель степени

      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, чтобы получить это число.

      Пример: 100 -> 2, 1000 -> 3, 10 -> 1

      Parameters

      Returns number

      Десятичный логарифм

    • Возводит 10 в степень числа.

      Пример: 2 -> 100, 3 -> 1000, -1 -> 0.1

      Parameters

      • inputs: NumberDto

        Показатель степени

      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

      Returns number

      Угол в радианах

    • Находит угол, в радианах, косинус которого равен заданному числу.

      Пример: 1 -> 0, -1 -> pi (около 3.14)

      Parameters

      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

      • inputs: NumberDto

        Показатель степени

      Returns number

      e в этой степени

    • Преобразует угол из градусов в радианы.

      Пример: 180 -> pi (около 3.14159), 90 -> pi/2

      Parameters

      • inputs: NumberDto

        Угол в градусах

      Returns number

      Угол в радианах

    • Преобразует угол из радианов в градусы.

      Пример: pi -> 180, pi/2 -> 90

      Parameters

      • inputs: NumberDto

        Угол в радианах

      Returns number

      Угол в градусах

    create

    • Передает число без изменений, так что значению можно дать имя и использовать повторно.

      Пример: 42 -> 42

      Parameters

      Returns number

      То же число

    generate

    • Дает случайное число от 0 до 1, не включая 1.

      Пример: 0.342, 0.891 или любое другое значение в этом диапазоне

      Returns number

      Случайное число между 0 и 1

    • Дает случайное число между low и high.

      Пример: low 0, high 10 -> 3.7, 8.2 или любое другое значение между ними

      Parameters

      • inputs: RandomNumberDto

        Нижняя и верхняя границы диапазона

      Returns number

      Случайное число в диапазоне

      const value = bitbybit.math.randomNumber({ low: 0, high: 10 });
      
    • Дает список случайных чисел между low и high.

      Пример: low 0, high 10, count 3 -> [2.5, 7.1, 4.8]

      Parameters

      • inputs: RandomNumbersDto

        Нижняя и верхняя границы диапазона и сколько чисел сгенерировать

      Returns number[]

      Случайные числа

      const values = bitbybit.math.randomNumbers({ low: 0, high: 10, count: 3 });
      
    • Дает константу пи, отношение длины окружности к ее диаметру.

      Пример: 3.141592653589793

      Returns number

      Число пи

    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

      • inputs: ModulusDto

        Делимое число и число, на которое делить

      Returns number

      Остаток

      const remainder = bitbybit.math.modulus({ number: 17, modulus: 5 });
      
    • Округляет число до заданного числа десятичных знаков.

      Пример: 1.32156 до 3 знаков -> 1.322

      Parameters

      • inputs: RoundToDecimalsDto

        Число и сколько знаков после запятой оставить

      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

      • inputs: RoundToDecimalsDto

        Число и сколько знаков после запятой оставить

      Returns number

      Округленное число

      const clean = bitbybit.math.roundAndRemoveTrailingZeros({ number: 1.320000001, decimalPlaces: 3 });
      
    • Применяет одну операцию к одному числу: модуль, смена знака, квадратный корень, округление, логарифмы, тригонометрические функции и обратные к ним, экспонента или преобразование между радианами и градусами.

      Тригонометрические функции работают в радианах. Пример: sqrt от 5 -> 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 на диапазон от min до max вдоль кривой сглаживания, так что результат ускоряется или замедляется вместо равномерного изменения.

      Кривая 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 - середину.

      t вне 0 и 1 экстраполирует за концы. Пример: от 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 });
      
    • Находит, где значение находится между началом и концом, как долю: t, которое понадобилось бы lerp, чтобы его получить.

      Пример: 5 в [0,10] -> 0.5, 2.5 в [0,10] -> 0.25

      Parameters

      • inputs: InverseLerpDto

        Начальное значение, конечное значение и значение, которое нужно найти

      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

    • Заворачивает число в диапазон так, что оно идет по кругу: за 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

      const angle = bitbybit.math.wrap({ number: 370, min: 0, max: 360 });
      
    • Отражает значение туда-сюда между 0 и length по мере роста t: вверх до length, обратно вниз до 0 и снова.

      Пример: length 1 при t 0.5 -> 0.5, t 1 -> 1, t 1.5 -> 0.5, t 2 -> 0

      Parameters

      • inputs: PingPongDto

        Текущее значение и длина, в пределах которой отражать

      Returns number

      Отраженное значение между 0 и length

      const bounce = bitbybit.math.pingPong({ t: 1.5, length: 1 });
      
    • Перемещает значение к цели не более чем на maxDelta, не перескакивая ее.

      Пример: 0 к 10 на 3 -> 3, 8 к 10 на 3 -> 10

      Parameters

      • inputs: MoveTowardsDto

        Текущее значение, цель и наибольший допустимый шаг

      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" });