2016-09-25 3 views
-1

Мне интересно, что представляет собой математически правильный способ написания уравнения отображения. У меня есть ползунок (0, 100), который отображается в другом диапазоне значений (v_min, v_max). Есть ли стандартный способ записи, а не:Как написать уравнение отображения параметров

V = slider_value * (v_max - v_min)/(100 - 0)

Речь идет о том, есть ли стандартный математический способ записать отображение (а, b) - (c, d). Это скорее для бумажной документации, чем для самой кодировки.

Благодаря

+0

если его не вопрос кодирования вы на неправильный сайт. Возможно, попробуйте math.stackexchange.com, хотя, возможно, рассмотрение некоторых журналов в вашей области будет более продуктивным. – agentp

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет не о программировании и кодировании. – Pang

ответ

1

Вы должны добавить v_min, чтобы получить правильный результат.

И более общая формула для линейного отображения является

v = v_min + (slider_value - slider_min) * (v_max - v_min)/(slider_max - slider_min) 

Обратите внимание, что Cf = (v_max - v_min)/(slider_max - slider_min) известна константа для данного отображения, так что небольшая оптимизация можно избежать излишних вычислений на каждом шаге:

v = v_min + (slider_value - slider_min) * Cf 
+0

Привет, речь идет не о методе сопоставления, который я прошу, извините, если это не ясно. Речь идет о документировании. Как написать уравнение в документе? Существует ли стандартный способ документирования того, как сопоставить (a, b) с (c, d). –

0

вам мог бы использовать Interpolation

Interpolation[{{slidermin,vmin},{slidermax,vmax}}]@sliderval 

(вам может понадобиться InterpolationOrder->1, чтобы отменить предупреждение)

Это принципиально просто построение выражения, указанного в другом ответе, но это вызовет предупреждения, если вы выйдете за пределы диапазона.

+0

Привет, это не о методе сопоставления, который я прошу, извините, если это не ясно. Речь идет о документировании. Как написать уравнение в документе? Существует ли стандартный способ документирования того, как сопоставить (a, b) с (c, d). –

+1

так зачем тег математики? – agentp

1

Я думаю, что функция, которую вы ищете, Rescale, потому что именно то, что вы спрашиваете:

v = Rescale[slider_value, {0, 100}, {v_min, v_max}] 

Пример:

DynamicModule[{x = 0}, 
    Column[{ 
     Dynamic[x], 
     Dynamic[Rescale[x, {0, 100}, {-200, 300}]], 
     Slider[Dynamic[x], {0, 100}] 
    }] 
]