Войти
Unreal EngineФорумПрограммирование

UE4, точность вычислений

Страницы: 1 2 Следующая »
#0
6:19, 5 сен. 2018

Здравствуйте.
Пытаюсь на данное время перенести реализацию метода Рунге-Кутта 4 порядка на БП движка UE4.
Для реализации данного метода необходимы начальные параметры (в моем случае координаты, векторы скоростей, шаг вычислений и т.д...)
В данных вычислениях важна точность расчетов, однако оперировать приходится с вещественными числами, с точностью до 6 знаков после запятой.
И в процессе работы функции, со значениями происходит какая-то содомия: точность теряется, результаты математических операций не совпадают с результатами вычислений инженерного калькулятора, даже при записи входных данных в переменную типа float, движок автоматически после точки меняет цифры на приближенные, но отличные от введенных мной.
В общем вопросы такие: можно ли в системе блюпринт работать с массивами данных, не беспокоясь о потере точности;
Можно ли там задавать значения в виде: 3.9860044е+5;
А так же, интересует вывод финальных значений, к примеру: printf(stdout, "%15,13f", variable);
Собсна, подскажите пожалуйста как со всем этим корректно работать в системе блюпринт.
Заранее спасибо.


#1
6:32, 5 сен. 2018

float
double
Других вещественных чисел в подобных продуктах в принципе не будет - это то, что поддерживается непринуждённо железом компьютера.
Но в игровых движках чаще всего работают с float и double используют очень редко - под это как правило заточены и современные видеокарты.

#2
9:47, 5 сен. 2018

Можно симуляцию на C++ делать. Double кодировать в строки для передачи данных между блупринтами и C++ и вывода на экран.

#3
11:34, 5 сен. 2018

Да наверняка плагины есть математические, причем фришные.

#4
14:06, 5 сен. 2018

Dcs
в большинстве задач 6 значащих знаков float хватает с головой. разумеется, для расчёта задач с очень большими величинами вроде динамики орбит планет или очень малыми вроде молекулярной динамики, задачу надо сначала корректно обезразмерить, а потом решать.

#5
14:43, 5 сен. 2018

Suslik
Имеете ввиду намеренно уменьшить/увеличить некоторые параметры в тысячи раз для удобства вычислений, а затем привести результат к актуальному?
Я, наверное, даже приврал, точности в 6 знаков после запятой маловато будет :((

#6
17:41, 5 сен. 2018

Dcs
> Я, наверное, даже приврал, точности в 6 знаков после запятой маловато будет :((
Если тебе мало 6 знаков, есть неплохая вероятность, что ты неправильно считаешь. А что ты хочешь посчитать и каким образом ты это пытаешься сделать?

#7
18:56, 5 сен. 2018

https://answers.unrealengine.com/questions/56053/double-precision… t-in-ue4.html
Нет в анриле дабл пресижн

#8
21:01, 5 сен. 2018

Delfigamer
Все правильно считаю, ибо на плюсах уже реализовано и сверено с эталоном.
Модель орбитального движения, где во многих формулах (определение дальности в частности) присутствует операция умножения на скорость света, потому даже маленькая неточность грозит серьезным промахом

#9
23:00, 5 сен. 2018

Dcs
> Имеете ввиду намеренно уменьшить/увеличить некоторые параметры в тысячи раз для
> удобства вычислений
А как умножение в 1000 раз повлияет на точность?

#10
23:19, 5 сен. 2018

Dcs
переходите на double, в чем проблема то?

#11
0:03, 6 сен. 2018

1 frag / 2 deaths
Диапазон float не такой большой.
Константа Планка, масса электрона - близки к границам.
Возвёл в квадрат энергию водородной связи или массу ДНК - вылетел в денормалы.

Но множить, конечно, имеет смысл на степень двойки.

#12
3:42, 6 сен. 2018


UncleMike
Как в блюпринтах назначить переменной тип double?

#13
6:55, 6 сен. 2018

1 frag / 2 deaths
Скорее всего никак. И это хороший вариант, мы просто двигаем запятую куда нам хочется. Я плохо и не отзывался об этом способе, если внимательно почитаете

#14
9:06, 6 сен. 2018

Были времена, когда на первых консолях эмулировали даблы через несколько интов. Хорошие были времена...

А вообще, про юзание  float в UE4 написаны уже целые легенды, но все в рамках IEEE 754

Ну или  google: ue4 float issue

Нужно юзать Дабли и все пройдет.

Страницы: 1 2 Следующая »
Unreal EngineФорумПрограммирование