Функция range служит для перевода значения из одного диапазона, например от 0 до 1000 в другой, например от -1 до 1. Для быстрого получения значения в разных диапазонах, определим свою функцию range.
Формула для перевода значения из одного диапазона в другой следующая:
Определим функцию в соответствии с формулой:
|
1 2 3 4 5 |
def range(value, min_src=0.0, max_src=1.0, min_dest=0.0, max_dest=1.0): if max_src == min_src: return 0.0 else: return ((value - min_src) / (max_src - min_src)) * (max_dest - min_dest) + min_dest |
Теперь мы можем с ее помощью легко получить значение, например из диапазона 0 … 10 в диапазоне -1 … 1 для координаты X положения текущего активного объекта:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
print(bpy.context.object.location.x) # 6.05 print( range( bpy.context.object.location.x, min_src = 0, max_src = 10, min_dest = -1, max_dest = 1 ) ) # 0.21 |

.blend file on Patreon
Я нихера не понял
Какие D2max? Какие X2? Хоть бы объяснения дали
Буквами D обозначены Диапазоны. D1 — исходный диапазон чисел, в котором лежит исходное число X1. D1max — верхняя граница диапазона D1 (максимально возможное число в этом диапазоне чисел). D1min — нижняя граница. D2, D2max, D2min — то же самое, для диапазона чисел в котором мы хотим получить число. X2 — итоговое число, которое мы получим в нужном нам диапазоне D2.
Способ рабочий,число 1811764 сместилось в диапазон от 2048 до 4096,результат 3538,6015625.
А есть похожий способ с целочисленными результатами?
В формуле есть деление, поэтому, думаю, появление дробной части неизбежно.
Возможно поможет банальное округление результата до целого.