Владимир Малука
28 сообщений
#15 лет назад
Цитата ("CrAzY_GeNiYS"):
Ну а вобще... Хоть я и не програмист, но выскажу мнение, как человек, знающий математику на уровне 11 класса на отлично и знающий програмирование, только основы...
Все рельсы расположены не зигзагом... либо прямые, либо дуги окружностей, только разных диаметров...

Вузовскую механику, как приложение математики, в данной задаче применять необходимо. Дуги окружностей (кривых второго порядка) нельзя использовать для стыковки участков рельсового пути. Такие стыки будут испытывать удары и быстро разрушаться. Кривые должны быть как минимум третьего порядка.
Антон Сердюк
120 сообщений
#15 лет назад
Цитата:
Вузовскую механику, как приложение математики, в данной задаче применять необходимо. Дуги окружностей (кривых второго порядка) нельзя использовать для стыковки участков рельсового пути. Такие стыки будут испытывать удары и быстро разрушаться. Кривые должны быть как минимум третьего порядка.

Мне почему-то кажется, что для модели это не имеет значения.
Василий С.
106 сообщений
#15 лет назад
Цитата ("WExpert"):
Цитата:
с развилками и тупиками

Не развилками, а стрелками. Развилка в лесу на тропинке


Заказчик вообще называл их шпалами, так что - это нормально.


PS. про школьника с базовыми навыками программирования уж загнули конечно... он скорее забьет массив со всеми координатами и будет перемещаться по ним, получив на выходе процесс зависящий от тактов, а не от реального времени. С виду-то программка простенькая, да и в голове все обычно представляется куда проще, как говориться, не попробуешь - не узнаешь
Василий С.
106 сообщений
#15 лет назад
Цитата ("CrAzY_GeNiYS"):
Ну а вобще... Хоть я и не програмист, но выскажу мнение, как человек, знающий математику на уровне 11 класса на отлично и знающий програмирование, только основы...
Все рельсы расположены не зигзагом... либо прямые, либо дуги окружностей, только разных диаметров...
Следовательно, определить длину отрезка не составит труда ... А расчитать скорость поезда, его замедление, ускорение нефиг делать по формулам...
А если знаеш програмирование и несколько нужных формул, то сделать такую программу может даже маленький ребёнок... Но другое дело додуматься до этого

З.ы. Если ребёнок знает эти формулы и програмирование ...


кхм... запаритесь подгонять свои дуги - честно. Вот смотрите, изгибы могут быть достаточно мелкими - далеко не все участки одинаковой длины, особенно при прохождении нескольких стрелок, т.е. какой выход? делать много мелких участков? или длины участков указывать? Такое задание траекторий в принципе может подойти под статичную модель, но как только возникнет необходимость применить модель на различных... эмм... маршрутах, возникнут новые трудности с подгонкой. Как, например выглядел бы редактор карт? Будет ли гарантировано, что при масштабирование куски дуг не разъедутся?

По мимо этого есть еще другие заморочки, направление, скорость, пройденное растояние, фактическое местоположение на момент отрисовки.

Цитата:
Хоть я и не програмист

А это на самом деле самый важный факт. И для нас, программистов, бывает очень плохо, когда заказчик слабо осознает "как это работает". "Да Вы что? это же мелочи, измените по быстрому" - ррррр... убил бы...
Виктор Т.
1036 сообщений
#15 лет назад
akme, при расчете учитывается динамика поезда? Учитывается ли кориолисово ускорение? Нагрузка на рельс?
И сколько хотите за свой исходник?
Василий С.
106 сообщений
#15 лет назад
Цитата ("Sivis"):
akme, при расчете учитывается динамика поезда? Учитывается ли кориолисово ускорение? Нагрузка на рельс?
И сколько хотите за свой исходник?


Увы задачи учета нагрузки не стояло, равно как и кориолисового ускорения (что собственно отражено в списке решенных задач).
Я готов доработать данный код применительно к Вашим задачам - предлагаю обсудить данный вопрос и вопрос цены посредством личных сообщений или ICQ: 322779142
Дмитрий М.
441 сообщение
#15 лет назад
Цитата ("akme"):
Цитата ("CrAzY_GeNiYS"):
Ну а вобще... Хоть я и не програмист, но выскажу мнение, как человек, знающий математику на уровне 11 класса на отлично и знающий програмирование, только основы...
Все рельсы расположены не зигзагом... либо прямые, либо дуги окружностей, только разных диаметров...
Следовательно, определить длину отрезка не составит труда ... А расчитать скорость поезда, его замедление, ускорение нефиг делать по формулам...
А если знаеш програмирование и несколько нужных формул, то сделать такую программу может даже маленький ребёнок... Но другое дело додуматься до этого

З.ы. Если ребёнок знает эти формулы и програмирование ...


кхм... запаритесь подгонять свои дуги - честно. Вот смотрите, изгибы могут быть достаточно мелкими - далеко не все участки одинаковой длины, особенно при прохождении нескольких стрелок, т.е. какой выход? делать много мелких участков? или длины участков указывать? Такое задание траекторий в принципе может подойти под статичную модель, но как только возникнет необходимость применить модель на различных... эмм... маршрутах, возникнут новые трудности с подгонкой. Как, например выглядел бы редактор карт? Будет ли гарантировано, что при масштабирование куски дуг не разъедутся?

По мимо этого есть еще другие заморочки, направление, скорость, пройденное растояние, фактическое местоположение на момент отрисовки.

Цитата:
Хоть я и не програмист

А это на самом деле самый важный факт. И для нас, программистов, бывает очень плохо, когда заказчик слабо осознает "как это работает". "Да Вы что? это же мелочи, измените по быстрому" - ррррр... убил бы...


Хотите я скажу как я в действительности предполагал работу проги?
Смотрите... Когда идёт генерация дороги, то в любом случае она состоит либо из прямых, либо из дуг... Следовательно при генерации эти элементы просто записать имена и их длинну... а потом допустим когда поезд подходит к данной точке соединения двух дуг например, расчёт уже идёт не с той дугой, а этой... тоесть теперь всё считается на этой дуге...
Кароче смысл разбиения каждой дуги и каждой прямой на отдельную часть и обозначение ей имени, даёт более простой расчёт по формуле, меньший код...

Я же говорю, что я не знаю просто как записывается командана том или ином языке, но я знаю возможности языка програмирования и что можно делать ... Просто тут работает не сколько знание языка програмрования, а сколько смекалка и знание математики ...
Василий С.
106 сообщений
#15 лет назад
И что же нам должно дать "имя дуги" и ее длина? Ну нарисуйте мне более конкретный пример использования дуг, хоть на бумажке. Откуда у Вас взялся "меньший код"?

Это в конструкторе дорога состоит из набора "кусков"... какой расчет "на другой дуге"? Либо Вы не совсем ясно выражаетесь (ибо я недопонял), либо не поняли что я написал...

Кто-нить еще может высказать предположения? Просто интересно послушать различные мнения
Дмитрий М.
441 сообщение
#15 лет назад
Блин да генератор когда чо-то там делает, создаёт первый кусок: указывает координату начала, конца; длинну... Вобщем все параметры, нужные для расчётов; задаёт этому элементу номер или имя.... И так делается пока не будет созданно нужное количество элементов... А все эти результаты для удобного использования вставлять во временный массив... Просто сложность сдесь будет в создании качественного генератора ...
Василий С.
106 сообщений
#15 лет назад
Генератор... откуда собственно у Вас взялся "генератор"?
Дмитрий М.
441 сообщение
#15 лет назад
Эм... генератор... А каким боком вы тогда собираетесь или уже собрались делать карты или уже сделали? ...
Антон Сердюк
120 сообщений
#15 лет назад
Предположения... Рискну. Что сразу приходит в голову:
У нас есть карта рельс. С развилками и тупиками. Развилки (они же стрелки) делят дорогу на несколько независимых частей. Мне почему-то кажется, что рассматривать по отдельности их будет проще.
Каждая часть пути между развилками может иметь свои уравнения
X = X(S)
Y = Y(S),
где S - пройденное расстояние.

Например, у нас идет сначала прямолинейный участок пути
0 <= S <= S1
X = X0 + aS;
Y = Y0 + bS;

Потом окружность:
S1 <= S <= S2
X = X01 + r cos( ф0 + S/r )
Y = Y01 + r sin( ф0 + S/r ),
где ф0 - начальный угол стыковки кругового сегмента и прямолинейного, X01 и Y01 - координаты центра окружности.

Таким образом строим из прямолинейных и закругленных частей полную картину дороги между стрелками.


Далее. Зная закон ускорения поезда a = a(t), нетрудно вывести закон движения: s = s(t).
Далее из полученного S(t) получаем
X(t)
Y(t)

Работа со стрелками:
Поезд может поехать только по одной ветке стрелки. Соответственно, мы точно можем знать функцию координат от времени для любого пути поезда (пускай он даже кругами ходит). Собственно, это все, как мне кажется... Основная задача решена.
Виктор Т.
1036 сообщений
#15 лет назад
Не хватает уклона полотна, оно тоже влияет на a=a(t)
Антон Сердюк
120 сообщений
#15 лет назад
Sivis, предлагаете сделать трехмерную модель?
Дмитрий М.
441 сообщение
#15 лет назад
Если честно, то это тоже самое что сказал , токо я без формул, чтоб голову не забивать...

Вот я как раз поддержу Sivis... Правда для того, чтобы сделать то что он предложил, нужно очень хорошо попотеть... а для этого как я понимаю лучше использовать цвет карты... Тоесть определённый цвет для определённой высоты...
Василий С.
106 сообщений
#15 лет назад
2 CrAzY_GeNiYS Тогда уж не генератор, а редактор. Пути не сами по себе строятся, модель строится по реальной схеме.
Дугами путь задать-то можно, я не говорил, что нельзя, но как мне представляется - это более кропотливое занятие.

Представьте себя на месте человека, у которого перед глазами схема путей и ему надо загнать ее в модель.
Даже если будет сканированная подложка, подгонять дорогу кусками сложновато, да и редактор делать проблематичнее.
Впомните 3D Max, Flash - нигде траектории не состоят из кусков - это единая линия, построенная по определенным критериям.
Антон Сердюк
120 сообщений
#15 лет назад
Хм... Любой набор точек можно аппроксимировать к любому виду функции с той или иной точностью. Зачем руками это делать? Пускай программа автоматом строит..
Возможно, это не самое лучшее решение, но это первое, что приходит в голову.
Может быть автор предложит более рациональную идею? Мне интересен вопрос сам по себе.
Василий С.
106 сообщений
#15 лет назад
Цитата ("m00t"):
Хм... Любой набор точек можно аппроксимировать к любому виду функции с той или иной точностью. Зачем руками это делать? Пускай программа автоматом строит..
Возможно, это не самое лучшее решение, но это первое, что приходит в голову.
Может быть автор предложит более рациональную идею? Мне интересен вопрос сам по себе.


Наконец-то я услышал то, чего хотел - строим кривые по точкам - теперь от дуг с радиусами может откажетесь?
Просто я в самом начале намекал на удобство пользователя и составление карт, а про это никто и ничего не сказал.

Ладно, никакой тайны - я использовал кривые Безье второго порядка (этого оказалось достаточно). Дабы не особо мучаться с "рукоятками", кривые я построил от середин отрезков, проложенных между опорными точками.
Дмитрий М.
441 сообщение
#15 лет назад
Жаль я этого пока что не знаю... Для меня эти кривые хоть какого угодно порядка ничего не значат ... не изучали ...
Антон Сердюк
120 сообщений
#15 лет назад
Цитата:
Ладно, никакой тайны - я использовал кривые Безье второго порядка (этого оказалось достаточно). Дабы не особо мучаться с "рукоятками", кривые я построил от середин отрезков, проложенных между опорными точками.

А опорная точка в данном случае служит средней опорной точкой для кривой?

Спорный вопрос... Получится, рельсы будут реально всегда немного внутри контура опорных точек. Хотя, если точек достаточно много..