![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Как тебе это удалось?
Помогли люди. Как может сказаться на других функциях или этот байт отвечает исключительно за округление? Если я правильно помню, то только за округление. Для всех записываемых чисел с запятой. |
![]() |
![]() |
![]() |
|
Яndex
Спонсор
Регистрация: 01.01.2007
Сообщения: 500
Реклама показывается изредка по случайному принципу |
![]() |
![]() |
#17 |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
Шок прошел, немного потестил, как ни странно, но на стыках тайлов даже такая точность не дает идеальной стыковки, упертая вещь МСТС, но все в допуске, можно пренебречь.
Подожди как для всех цифр? Высоту в позиции и QDirection он так и писал, значит какое-то разделение значений у него все же есть. Обратную совместимость проверял? Я в смысле как пойдет маршрут на обычном (без правки) exe. И какие параметры "зацепило"? ps Хорошие люди тебе помогли, если тест пройдет успешно - за такие вещи нужно памятник ставить, лично для меня это несколько лет свободного времени убитого на коррекцию тупости МСТС.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Подожди как для всех цифр? Высоту в позиции и QDirection он так и писал, значит какое-то разделение значений у него все же есть.
Там для всех чисел с точкой этот атрибут используеться. Обратную совместимость проверял? Я в смысле как пойдет маршрут на обычном (без правки) exe. Нет. Ездил на правленом. И какие параметры "зацепило"? Надо смотреть по файлам сценария, путей, трафика и сравнивать до и после. Я точно не знаю, но есть такое предположение. Если готовый маршрут переложить то бывает ошибка. |
![]() |
![]() |
![]() |
#19 |
Администратор
Регистрация: 09.04.2008
Адрес: Россия
Сообщений: 4,625
Вы сказали Спасибо: 1,342
Поблагодарили 3,960 раз(а) в 719 сообщениях
![]() |
![]()
Совсем офф, но пока тема горяча....а какой байт отвечает за количество, имена и командные клавиши анимации деталей типа дверей в ПС? Я уже тут даже тему специальную завел для ответа)
http://www.trainsim.ru/forum/showthr...?t=4902&page=3 Может уважаемые добрые люди и здесь помогут? ![]() |
![]() |
![]() |
![]() |
#20 | ||
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
lyolik, подложил обратно exe без правки - все Ок, в принципе закономерно, БД не изменяется и симулятор использует траекторию записанную в БД с той точностью как записано, он туда вновь стыкуемые секции и писал достаточно точно, а вот при переборке (когда данные берутся из W) начинался ужас со стыковкой.
Изменять путь проложенный в правленой версии из обычной пробовал - без проблем. Насчет всех цифр, похоже "досталось" QDirection, раньше записывался до 9 знаков после запятой, теперь до 6 как и Position. А что если другие значения кроме 66? add Очень интересные эксперименты =)), в исходном варианте было % g (67), мы задаем f (66) может это заглавные буквы разрядности? Пробую разные варианты, при d (64) он пишет вообще без запятой до 10 разрядов, при Q (51) выдал во всем файле "Position ( Q Q Q )" ![]() По соседним сходным значениям он понимает e, u, d и 0.2 но 0.2 это уже выход за смещение, очень интересно… % p (70) Цитата:
![]() =============== Изрядно погуглив пришел к выводу что мы имеем дело с модификатором точности и кодом формата функции printf (почитать можно тут и тут, исходя из этого получается, что приемлемым вариантом будут только коды g и f. Как я понимаю это коды вывода числа с плавающей точкой и "по умолчанию" число знаков после запятой (точки) как раз равно 6, g это более короткий вариант формата f (Билл скотина!). Меняя код % g (67) на % f (66) мы указываем функции printf выводить в W файлы числа в "полном формате" f, но по умолчанию он ограничен 6 знаками, что для QDirection вероятно недостаточно, да и нужно стремиться к совместимости со "стандартным" вариантом, там максимум 10 разрядов. Почитав описание функции решил обнаглеть и попробовать указать число знаков явным образом записав в файл %0.8f выйдя за пределы строки, ожидал ошибки, но как ни странно все работает и я явно "перестарался" ( т.е. симулятору плевать на ".8" ): Цитата:
ps могу конечно ошибаться ибо не программист, но ИМХО путь указанный lyolik правильный, тут совсем нелишней была бы помощь программистов.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. Последний раз редактировалось Zabor; 15.08.2009 в 17:26. |
||
![]() |
![]() |
![]() |
#21 | |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
Рано я так обрадовался, получается, что мы меняем шило на мыло вот изменения в записи стрелки до правки кода формата вывода в W файл и после:
Цитата:
JNodePosn - точность возросла Position - точность возросла QDirection - тут все очень спорно, по некоторым значениям точность возросла, по некоторым снизилась в зависимости от разрядности исходника, а с некоторыми происходят странные метаморфозы, например третье значение 8.07508e-005 -> 0.000081 совсем неясно чем это грозит, понятно только что "e-005" какой-то бред, но столь значительное изменение целых с 8 на 0 пугает. Что еще настораживает - а не пишем ли мы теперь обрезанные до 6 знаков после точки значения в БД? Ведь столь серьезное увеличение точности Position должно было дать практически идеальные стыки ниток в БД, однако, на деле это не совсем так, хотя и в допуске. Также не очень понятно, почему код формата %e не мешал записывать в параметр QDirection значения вида 0.000450976 при этом обрезая значения в Position строго на шести разрядах независимо от числа знаков после точки, зато %f порезал или дотянул все значения всех параметров до 6 знаков после запятой. Вероятно то, что писать в Position определяется где-то еще отдельно. Еще странность варианты типа %.3f, %.8f, %.9f никакого впечатления на MSTS не производят.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
|
![]() |
![]() |
![]() |
#22 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Grebnev постараюсь узнать, что можно сделать. Правда я не совсем понял что нужно.
Zabor например третье значение 8.07508e-005 -> 0.000081 совсем неясно чем это грозит, понятно только что "e-005" какой-то бред, "e-005" это 10 в степени -5. Все правильно там. Наверное нужно делать с нуля маршрут и сценарии с правленой точностью, а смешивание с обычной точностью дает сбой. Скорее это улучшение только для разработчиков. Готовый продукт править нельзя. |
![]() |
![]() |
![]() |
#23 |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
lyolik, совершенно понятно, что для разработчиков, причем озабоченных стыковкой, таких какнапример я, многие на эти ошибки просто не обращают внимания, не говорю, что это плохо, лично сам с ними смириться не могу.
Со значением понятно, а вот почему QDirection пишется без правки с такой точностью как нужно не очень.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
![]() |
![]() |
![]() |
#24 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Со значением понятно, а вот почему QDirection пишется без правки с такой точностью как нужно не очень.
Может это значение осталось от предыдущего раза? Я заметил, что перезапись идет только частичная. Если не двигать объекты, то они не перезаписываються. Возможно идет перезапись только w файлов на которых было изменение места объекта. |
![]() |
![]() |
![]() |
#25 |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
При перезаписи W файла "исправляются" все значения у всех объектов, т.е. во всем файле, перезапись соответственно происходит если сдвинуть любой, даже статический объект.
Прогнал пару км на правленом exe (%f) - субъективно "непроваров" меньше, но они есть все равно, видимо улучшив одно ухудшили другое =((.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
![]() |
![]() |
![]() |
#26 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Может нужно пересборку маршрута сделать. Возможно "непровар" это когда строили путь из двух точек навстречу и в этой точке уже нельзя застыковать идеально. Длина рельса не позволяет.
|
![]() |
![]() |
![]() |
#27 |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
Дык я пересборку и делал - подъездной путь, который лежал на отметке старого профиля пересробрал весь на новой высоте, без нудной проверки стыковки после КАЖДОЙ секции, потом поехал, на 1 км 4 "непровара", 2 из которых вне допуска…
Получается единственный путь - декопилировать файл, добавить как полагается %.9f затем компилировать обратно, но это уже задача для программистов, у меня сейчас пока настроение освободить безвозвратно 95 ГБ на диске, надеюсь это временно. ps большое тебе спасибо за подсказу, в exe много нашел нового, вывод практически всех параметров повязан на printf.
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
![]() |
![]() |
![]() |
#28 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Еще странность варианты типа %.3f, %.8f, %.9f никакого впечатления на MSTS не производят.
У меня работает. Если ставлю тип %.3f то 3 цифры после запятой, типа %.4f то четыре. |
![]() |
![]() |
![]() |
#29 |
Разработчик
Регистрация: 01.02.2008
Адрес: Санкт-Петербург
Сообщений: 18,938
Вы сказали Спасибо: 11,499
Поблагодарили 10,291 раз(а) в 3,846 сообщениях
![]() |
![]()
Странно, скинь мне exe через обменник ссылкой в личку, может я что-то не так или не той программой делаю?
__________________
Присылайте ваши сценарии в копилку msts. Опыт - это нечто, что приобретается сразу после того, как это было нужно. 100% не предпринятых попыток обречены на провал. |
![]() |
![]() |
![]() |
#30 |
Пользователь
Регистрация: 12.08.2009
Сообщений: 70
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
хорошо, только чуть позже. минут 10
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
|
![]() Что это? |