Всадники Кальрадии
Модификации => Обмен опытом: Mount&Blade => Обмен опытом (в помощь мододелу) => Инструкции и уроки по созданию модификаций => Тема начата: somlich от 01 Октября, 2010, 07:01
-
Например необходимо расчитать синус угла в 30 градусов используем оператор (store_sin,":sin",30) При этом в sin занесется 0, т.к. дробная часть просто отрежется - никто не подскажет как это побороть?
-
объясни что за дробные числа ,и зачем они нужны?
-
вроде никак, не работает модулька с дробями, окружает до целого
и не только в синусах, а и в плюсах-минусах и остальных математических операциях
-
Итак - вроде разобрался. В модульке привычных нам дробных чисел как бы нет но иногда надо, например нужно вычислить для примера синус угла в 20 градусов, кулькулятор дает результат 0,342. Соответственно код в модульке
(assign,":ugol",20),
(assign,":sin",0),
(store_sin,":sin",":ugol"),
по идее должен дать вышеперечисленный результат - но не тут то было он выдаст 0 - т.е. дробная часть просто отрежется.
Соответственно нужно использовать операторы преобразования переменной в число с фиксированной запятой. При этом указываем точность преобразования - сколько знаков после запятой.
(assign,":ugol",20),
(assign,":sin",0),
(set_fixed_point_multiplier, 100), #точность - два знака после запятой
(convert_to_fixed_point, ":ugol"),
(convert_to_fixed_point, ":sin"),
(store_sin,":sin",":ugol"),
В итоге получится число 34. В дальнейшем мы его умножаем на нужное по используемой формуле и в конце не забываем разделить на 100 для того чтобы симулировать умножение на дробь.
Вот в прицепе и все, если кому то инфа будет полезна - я буду рад, во всяком случае найти ее не смог.
И еще один важный момент - преобразование должно всегда стоять перед синусом, т.к. только мы начинаем умножать переменную или складывать как обычно, то она сразу переходит в другой формат и в итоге опять будет 0.
-
somlich, ты голова! :thumbup:
инфа мега полезная!
я например set_fixed_point_multiplier использовал только для задания координат и до такого применения не додумался
модераторы, перенесите плиз тему в Инструкции и уроки по созданию модификаций чтобы не затерялась
очень нужная информация
зы: есть еще convert_from_fixed_point... очевидно при конвертировании из фиксет_пойнтов обратно получится тот-же ноль =/
[mod= Toxic]Перенёс[/mod]
-
Меня, вот, интересует, что надобно делать с переменной после того, как с ней будут произведены расчёты, результат которых должен иметь дробную часть? Т. е. найдены синус и косинус угла, и что с ними нужно сделать, чтобы использовать в дальнейших расчётах?
Разобрался (просто я сюда ещё и "со своими тараканами").