Формула нелинейного графика. Чем дальше вы скользите, тем меньше он движется

У графа, который это делает, есть имя, и я пытаюсь придумать алгоритм, вычисляющий результат на основе ввода DOUBLE.

Вот так: https://www.montereyinstitute.org/courses/Algebra1/COURSE_TEXT_RESOURCE/U03_L2_T5_text_final_files/image008.gif

Я пытаюсь создать метод, который выполняет то, что вы видите в приложениях, который в основном замедляет скорость, чем дальше вы тянете. Так, например, если вы двигаете пальцем, прямоугольник легко появляется, но затем, чем дальше вы тяните, тем медленнее он движется.

Полное требование состоит в том, чтобы иметь количество «свободного извлечения», то есть: это соотношение 1: 1, когда количество, которое вы проводите пальцем, равно выходному значению. И иметь теоретический «максимальный результат», который я предполагаю теоретическим, потому что чем больше ваш палец двигается, тем меньше изменяется величина.

У меня такое чувство, что для этого есть формула. Так что, ребята, математики, пожалуйста, помогите :)


person Kris Adams    schedule 08.10.2015    source источник
comment
Экспоненциальное затухание Google - мне кажется, это соответствует вашему запросу.   -  person D. Ben Knoble    schedule 08.10.2015
comment
Предоставленный график выглядит как v = a / t (гиперболический); если вы ищете более продуманное решение, например. v = a / t**1.234 + b/t**2.345 вы должны предоставить несколько баллов   -  person Dmitry Bychenko    schedule 08.10.2015


Ответы (1)


Вам придется попробовать и посмотреть, какая формула работает лучше всего для вас.

Предположим, что длина движения пальца равна D, а расстояние, на которое перемещается коробка, равно D'. Вы можете начать с чего-то очень простого, например:

D' = D / 2

Затем, если вам нужно некоторое расстояние «свободного вытягивания» F, вы, вероятно, включили бы его следующим образом:

D' = if D < F
     then D
     else F + (D - F) / 2

Чтобы увидеть, какое поведение D' работает лучше всего, вам нужно попробовать разные формулы. Например, квадратный корень:

D' = if D < F
     then D
     else F + sqrt(D - F)

Изменить: вот версия с верхней границей F + M. Это работает, потому что верхняя асимптота арктана равна Pi/2.

D' = if D < F
     then D
     else F + arctan((D - F) / M) * M * (2 / Pi)

Пример графика для F = 5, M = 3.
D' никогда не достигнет 8 в этом примере.

person Dmytro Shevchenko    schedule 08.10.2015
comment
Во-первых, это выглядит именно так, как я хочу (тот, что с квадратным корнем), но есть идеи, как установить теоретический максимум, чтобы я мог заставить его двигаться больше или меньше, чем вывод SQRT по умолчанию? - person Kris Adams; 08.10.2015
comment
@KrisAdams взгляните на мой последний пример. Коробка никогда не переместится дальше, чем на F + M. Или вам нужно поведение SQRT с добавленным максимальным расстоянием? - person Dmytro Shevchenko; 08.10.2015
comment
Ваша формула для включения теоретического максимума, похоже, работает неправильно. До свободной тяги доходит нормально, но потом очень быстро разгоняется. В идеале он должен быть плавным от бесплатной суммы до теоретического максимума. - person Kris Adams; 08.10.2015
comment
Я собираюсь отметить ваш ответ как принятый ответ для формулы SQRT. Это то, что я собираюсь использовать: D' = если D ‹ F, то D иначе F + sqrt(D - F) - person Kris Adams; 08.10.2015
comment
@KrisAdams да, извините, я где-то облажался в макс. формула расстояния. Если хочешь, я все еще могу изучить его позже. - person Dmytro Shevchenko; 08.10.2015
comment
Для всех, кто смотрит на этот вопрос (любой сам), это было бы полезно, если у вас будет время позже, чтобы выяснить, как сделать его идеальным. Но ответ SQRT в любом случае великолепен! - person Kris Adams; 08.10.2015
comment
@KrisAdams добавил еще одну формулу с рабочей верхней границей. - person Dmytro Shevchenko; 08.10.2015