forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   физика движения авто по прямой (http://forum.boolean.name/showthread.php?t=3826)

H@NON 05.07.2007 13:58

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

Ftraction = u * Engineforce,
где u - единичный вектор в направлении движения автомобиля.

и вектор скорости
Код:

Fdrag = - Cdrag * v * |v| 
где Cdrag константа, v - вектор скорости и |v| - модуль вектора v, являющийся длиной вектора v.

Как определить этот вектор? В чем различие между един.вектором и вектором скорости?

Вроде бы вектор - это отрезок начинающийся из (0,0,0) и заканчивающийся в (x,y,z), т е вектор задается лишь координатами его конца. Единичный вектор задается лишь направлением. Так как же мне узнать направление вектора?

2)Еще когда я не давлю на газ то силы сопротивления совсем не уравновешивают силу тяги , а просто отнимаются и машина начинает постепенно ускорятся в обратную сторону. Но думаю это само-собой решится когда я разберусь с вопросом №1.

Конечно я понимаю что решение может быть очень простое и я сам мог бы допереть до него, но вот не могу и все тут,поэтому я прошу помочь мне.

В аттаче все что на данный момент у меня есть.

alcoSHoLiK 05.07.2007 15:26

Re: физика движения авто по прямой
 
Зачем вычесляется Fraction, если значение нигде не используется? Вообще-то у тебя в U не единичный вектор, а черт знает что. Координаты вектора определяются разностью координат двух точек, причем первая не обязательно находится в начале координат. Можно, конечно, преположить, что первая точка находится в начале координат. Но тогда
Код:

U#=Sqr(ex#^2+ey#^2+ez#^2)
Это длина вектора. Единичный вектор должен иметь три координаты:
Код:

len = sqr(ex^2 + ey^2 + ez^2)

Ux = ex / len
Uy = ey / len
Uz = ez / len

А Fraction тогда должна задаваться скалярным произведением:
Код:

Fraction = Ux * EngineForceX + Uy * EngineForceY + Uz * EngineForceZ
или
Код:

Fraction = EngineForce * cos(угол между U и EngineForce)
Лучше приведи ссылку на оригинальную статью, чтобы можно было разобраться.

H@NON 05.07.2007 15:34

Re: физика движения авто по прямой
 
У меня Ftraction используется при суммировании сил - Flong.
Вот ссылка:http://www.gamedev.ru/articles/?id=70108

alcoSHoLiK 05.07.2007 19:03

Re: физика движения авто по прямой
 
Вложений: 2
Набросок на скорую руку. Я бы посоветовал начать с чего-нибудь полегче, если ты в векторах запутался)

H@NON 05.07.2007 19:33

Re: физика движения авто по прямой
 
Спасибо. Я подумаю над твоим советом.


Часовой пояс GMT +4, время: 11:59.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot