Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.192.95.161] |
|
Страницы: (4) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Очень нужно забацать лабораторную работу. Она заключается в том, что о плоскость ударяется упругий шар. Упругий это означает что при ударе он деформируется. Постепенно он должен успокоиться и не прыгать. Такую фигню надо написать на чистом Turbo Pascal'e. Начал копать инфу - нигде нет никакой инфы по созданию трехмерных объектов. В связи с этим нескольких вопросов:
1. Подскажите, пожалуйста, где можно найти инфу по созданию трехмерных объектов в паскале. 2. Нашел несколько работ: а) http://pascal.sources.ru/tmt/samples/bounce.zip - практически то что надо (только шар не останавливается). Но работа написана с применением opengl и под другой компилятор. А так низзя... Возможно кто-нибудь посоветует как переписать это чудо. б) http://pascal.sources.ru/demo/ball.zip - просто крутится в воздухе. Такую фигню было бы очень прикольно переписать. Чтобы падал и деформировался. в) Еще Passrc.zip (ссылку найти не могу) - то что надо только не деформируется. Помогите пожалуйста. Знакомый программер болеет и вежливо посылает меня. Как с чего начать???Реально ли эти проги переписать... ПОсоветуйте пожалуйста... Заранее благодарю... |
Сообщ.
#2
,
|
|
|
Надо спросить у wormball. Он точно знает %)
З.Ы. А почему именно трехмерный ? Так поставлено условие задачи ? |
Сообщ.
#3
,
|
|
|
Цитата Some1 @ 13.12.03, 13:17 Да такая задача. Надо спросить у wormball. Он точно знает %) З.Ы. А почему именно трехмерный ? Так поставлено условие задачи ? 1. Должен быть трехмерный шар и плоскость. 2. Шар должен ударяться о плоскость упруго (т.е. деформироваться при ударе). 3. В конце шар должен прекратить свое движение. А как спросить у wormball??? Написать ему приватное сообщение??? Не нагловато будет??? Да еще нашел ссылку на PASSRC.ZIP ( http://www.programmist.info/pub/PASSRC.ZIP )... Но это так между делом... |
Сообщ.
#4
,
|
|
|
Будет не нагловато, если ты вежливо попросишь. Кинь ему в сообщении линк на тему, и попроси посмотреть.
|
Сообщ.
#5
,
|
|
|
Ты паскаль знаешь? С 3Д когда нить работал?
Вопросик по задаче: шар деформируется только теноретически или же это должно отображаться на екране? 3д перспективное или изометрическое? |
Сообщ.
#6
,
|
|||
|
В том все и дело что нет... Есть опыт работы на Perl немного на C. Но pascal + 3d - никогда. Т.е. сам паскаль то знаю, а вот 3d уже нет. Основная сложность - отсуствие документации... И плохое понимание работы с графикой в паскале. Начал домогаться своего знакомого программера - от сказал что в примере PASSRC.ZIP сделать деформацию нереально - проще переписывать заново. С текстурами ничего неясно... Вот так-то все печально... Деформирование шара должно отображаться на экране. Повторюсь но идеал http://pascal.sources.ru/tmt/samples/bounce.zip . Очень все четко работает. По поводу перспективного и изометрического не понял... Поясни plz... |
Сообщ.
#7
,
|
|
|
Я имею ввиду 3д в какой проекции перспективноу (z-вглубь, х-вправо, у-вверх) или изометрическое (z-вверх а остальные оси под 120 градусов друг к другу). Текстуры чтоли тоже надо?
|
Сообщ.
#8
,
|
|||
|
насоветуешь ещё.... по графике ничем не могу помочь, разве что в виде линий, а текстурировать я не умею. а чтобы он деформировался - ето можно. смысл такой: шар задаётся в виде футбольного мяча, ну тоесь фигуры с 60 вершинами. получается массив из 60 точек в трёхмерном пространстве и связей между ними. далее постулируешь, что связи - ето пружинки, а вершины - ето точечные массы, и что со стороны центра шара действует постоянная сила давления воздуха, а при соприкосновении с землёй действует сила отталкивания от земли, ну и хорошо бы не забыть про силу тяжести. ну и рассчитываешь всё ето механикой. а потом на ето можно и текстуры натянуть. не знаешь как рассчитывать механику - спрашивай |
Сообщ.
#9
,
|
|
|
да кстати. готовый футбольный мяч http://enzyme.nm.ru/files/football.ent
|
Сообщ.
#10
,
|
|
|
Вот у меня есть такой исходник на Делфи: http://albom.nm.ru/ball.rar
Переделать его под TP7 в общем довольно просто. Необходимо выкинуть все что отностится к WinApi и OpenGL, и написать одну функцию проекции точки на экран. Вот вроде и все. Если подойдет, то смело обращайся, если что в нем будет не ясно. |
Сообщ.
#11
,
|
|
|
Я спрашиваю. %))) ты хорошё знаешь механику. Всегда завидовал %))))
Мне бы хотябы основные сведения. Ты хоть скажи, где это в доступной форме изложено. Или изложи основы сам. %) |
Сообщ.
#12
,
|
|
|
Ребят, спасибо большое... Еще спасибо уважаемому xxxnnn, который написал мне некоторые рекомендации по мылу... Буду думать и стараться...
Да только у пользователя albom не скачивается его мяч... (если не сложно - скинь на мыло - arkhangel(собака)mail.ru )... Еще раз всех благодарю... искренне... |
Сообщ.
#13
,
|
|||||||||||||||||||||||||
|
не! хорошо знать механику я буду, когда смоделирую велосипед а действительно хорошо знает механику vot какой мужик: http://graphics.stanford.edu/~fedkiw/ в алгоритмах c300g ссылку дал
в учебниках по физике напр есть такой савельев, там насколько я помню всё в доступной форме, для нефизических специальностей вузов. ну или ландау лифшиц, там в недоступной форме для физических специальностей . собственно в расчёте системы материальных точек нет ничего сложного. у тебя есть два массива трёхмерных векторов: координаты точек q и их скорости v, и один массив с массами. вектор задаётся приблизительно так:
мне лично больше нравится первый вариант, ибо можно написать for x:=0 to 2 do v[x]..... . также у тебя есть массив пружинок:
, где node1 и node2 - номера связанных точек, k - жёсткость, len - равновесная длина пружинки. или можно задать пружинки подругому, главное чтобы были определены параметры k и len. сначала рассчитываешь силу, действующую на каждую точку. если две точки соединены пружинкой, то на каждую действует сила, пропорциональная разности расстояния между точками и равновесной длины с коэффициентом пропорциональности k:
. но ето ещё полдела. надо силу пересчитать в приращение скорости. здесь надо знать направление силы. в нашем случае она направлена по оси, соединяющей точки, поетому чтобы получить координатные составляющие, надо силу умножить на направляющие косинусы, а приращение скорости равно силе, делённой на массу и умноженному на временной шаг dt:
тут главное не перепутать полярность, ибо иначе пружина будет не стягивать, а отталкивать. при соприкосновении с субстратом (предположим, что ето происходит когда z<0) действует сила реакции опоры, можно её представить пропорциональной степени погружения с коеффициентом n:
в общем случае ето может быть негоризонтальная поверхность, да и вобще могут сталкиваться два многогранника, так что сила реакции опоры может быть и не такой. ещё хорошая сила - сила трения. она пропорциональна скорости с некоторым коеффициентом b, а приращение скорости записывается так:
. ну и главная сила - сила тяжести
собственно можно придумывать собственные силы, напр в нашем случае нам нужно давление воздуха внутри шара. мы конечно не будем углубляться в тонкости газодинамики и примем (заметьте, от балды!!), что сия сила постоянна по модулю и действует со стороны центра шара. центр же определяется так:
а само приращение скоростей
наконец, когда все силы посчитаны, надо посчитать приращения координат:
и мы можем с чистой совестью сказать, что совершили один шаг численного интегрирования уравнений ньютоновской механики методом верлета. етим методом хорошо считать молекулы: http://moldyn.ru/bioinzhenerija/doc/stat/moldyn.htm собственно я в етой лаборатории делаю курсовую. а более сложные обьекты вроде велосипеда уже не представишь в виде системы материальных точек: ето уже будет система твёрдых тел, и если моделировать твёрдое тело системой точек, то там появляются гигантские жёсткости, и требуется очень маленький шаг интегрирования. что особенно неприемлемо, когда ты хочешь сделать реал-тайм симулятор велосипеда. собственно такие системы тоже можно моделировать с помощью механики твёрдого тела, но я ещё не очень её освоил. там надо расписывать уравнения относительно моментов импульса, вращать поразному, хотя если пару дней целиком посвятить расписыванию, обязательно чтото получится. а как моделировать жидкости или газы - ето я и в страшном сне представить не могу |
Сообщ.
#14
,
|
|
|
=8-[ ]
Cнимаю шляпу, профессор. %))))) Мне понимание сего не дано. Примерно после 3-4 выкладки тега CODE я начал терять смысл написанного %))) Кошмар !! Я даже не представляю, как это можно всё понимать. Остаётся кусать локти и ругать про себя дебильного учителя по физике в школе, который не смог нормально привить мне любви к этому предмету с самого начала. :'''''( З.Ы. Я ТОЖЕ ТАК ХОЧУУУУУУ.... %'''''(((((( |
Сообщ.
#15
,
|
|||
|
То бишь после такого шага нужно пересчитать координаты всех точек, умножив вычисленные вектора скоростей на dt<<1 и наконец нарисовав несчастный футбольный мяч с помощью банального line(x1,y1,x2,y2) И все сначала... |