Поиск первой метки времени, где сумма потолочных функций превышает порогJavascript

Форум по Javascript
Ответить
Anonymous
 Поиск первой метки времени, где сумма потолочных функций превышает порог

Сообщение Anonymous »

Контекст: < /h3>
Я моделирую повторные нажатия кнопки для постепенной игры. Там будут кнопки в игре, установленные для повторного нажима. Эти кнопки имеют:
  • variable press/sec скорости или скорости. /> Переменная нажимает/нажимает множители , которые усиливают каждое нажатие (не то же самое, что напрямую умножение значения нажатия/секунья)
На практике игра вычисляется в дискретных чанах времени (тикания). Мне нужно определить , когда во время тика ограничение скорости сначала сломано, поэтому я могу точно применить восстановления. (ограничение скорости сломано -> перегрев и сброс Tally -> COOLDOWN, промыть и повторение).

Некоторые данные IMM:

Чтобы сохранить прессы независимы от размера окна расчета клещей, presses «выровнены» на следующую метку времени, дисквизируемое на (1000/настойчивости. /> Например, 4 нажатия /с. ... 9750, 10000, 10250, 10500, ...
Я храню повторяющиеся прессы как нажимайте объекты
(

Код: Выделить всё

pressObj
s), содержащая нажатию на пресс, нажатие на давление на давность временной метки и скорость пресс/с. Подумайте 10^1000 и 10^-1000. (Спасибо Break_infinity.js)
Проблема:
Я уменьшил это до: Найдите наименьший временный ламп x, где f (x) = сумма функций потолка> Пороговые значения
Каждая группа, определяемая с помощью Piefise> Code, Code> Code>. Когда несколько нажатых объектов перекрываются, мне нужно найти, когда их сумма сначала превышает ограничение скорости.
Пример:
Кнопка обновляется с 10 нажатий/с 14 нажатия/сек. Кнопка имеет нажатие/нажатие множителя = 2 и ограничение скорости = 25 нажатия/сек.
Нажмите объекты (

Код: Выделить всё

pressObj
s) создаются каждые 210 мс, начиная с TimeStamp 2500. Всего есть 12 объектов для прессы; Первые шесть выполняют 10 нажатий/сек, а вторые шесть выполняют 14 нажатий/сек. Он пересечет 25 нажатий/секунду несколько раз. Скорее всего, аппроксимирование ≈ 30 000/7. src = "https://i.sstatic.net/h3xy8v9o.png"/>
(в этом примере, потому что мы видим, что ограничение нарушено на девятом объекте прессы, последние три пресс -объекта не будут созданы во время прогона программы, если не было совместного времени. /> Каждый объект прессы эффективно создает кусочную функцию < /strong>, основанную на четырех точках останова, где его влияние на текущие прессы /секунду Tally, < /li>
Прессы прекратились, и последние прессы начинают истекать - уменьшение бега, < /li>
Последний пресс истек - Tally вернулся к 0. < /li>
< /ol>
Pseudocode для конструирования функции кусочки из повторного нажатия.

Код: Выделить всё

tsStartPressing = pressObj.startPressingTimestamp
tsStopPressing = pressObj.stopPressingTimestamp
ppMs = pressObj.pressesPerSecond / 1000
mspp = 1 / ppMs
pressMul = pressObj.pressMul

// The four breakpoints
tsStart
tsPlateau = min( tsStop, tsStart + 1000 )
tsStartDecrease = max( tsStop, tsStart + 1000 )
tsEnd = tsStop + 1000

// The first performed press is aligned to the next timestamp divisible by milliseconds/press
tsAlignedFirstPress = ceil(tsStartPressing / mspp) * mspp

plateauTally = ceil((tsPlateau - tsAlignedFirstPress) * ppMs) * pressMul

// Breakpoints 1-2: Increment -- presses 'ramp up'
F_inc(t) = ceil((t - tsAlignedFirstPress) * ppMs) * pressMul

// Breakpoints 2-3: Plateau -- presses stop, or expire at the same rate they are pressed
F_plateau(t) = plateauTally

// Breakpoints 3-4: Decrement -- presses 'ramp down' as no more occur and they expire
F_dec(t) = plateauTally - ceil((t - (tsStartDecrease - tsStartPressing) - tsAlignedFirstPress) * ppMs) * pressMul

// Piecewise:
F(t) = {
F_inc(t)      |  tsStart 

Подробнее здесь: [url]https://stackoverflow.com/questions/79719198/finding-the-first-timestamp-where-sum-of-ceiling-functions-exceeds-a-threshold[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»