Текущий архив: 2004.08.08;
Скачать: CL | DM;
ВнизБиллиард. Найти похожие ветки
← →
Shopot © (2004-04-16 23:36) [0]Привет! Как сделать, чтобы при столкновении шары отскакивали друг от друга, обменивались импульсами и т. п. (даже если они будут плоскими).
← →
Zeqfreed © (2004-04-18 19:30) [1]Определить переменные xinc, yinc и приращать каждый промежуток времени координаты шаров на эти переменные, если шар сталкиваются, то xinc := - xinc, yinc := -yinc.
Это простейший вариант.
← →
Shopot © (2004-04-20 22:11) [2]Zeqfreed это не работает!
← →
zeqfreed © (2004-04-21 18:08) [3]Должно работать,
что именно не работает? не компилируется? ;)
← →
miek © (2004-04-21 19:07) [4]Не работает такой подход!!! Шарики симулировать - это не "hello world" рисовать, там сложнейшая физика должна быть. Вращение по всем осям, трение с проскальзыванием...
← →
zeqfreed © (2004-04-21 21:42) [5]2 miek
Согласен... я же написал - простейший вариант
← →
TButton © (2004-04-22 07:20) [6]предположим, шар А сталкивается с шаром Б
импульс движения теряет 5-10%
вычисляешь угол столкновения, как разницу между направлением движения шара и направлением между центрами шаров.
шар Б получает импульс движения = cos(угла столкновения)*импульс движения шара А*0.95 (потеря 5% импульса)
шар А получает импульс движения = sin(угла столкновения)*импульс движения шара А*0.95 (потеря 5% импульса)
направление тоже расчитывается из угла столкновения, сейчас точно не скажу как именно, надо по сидеть, на бумаге прикинуть.
← →
Yar-Com (2004-04-22 09:48) [7]Приближенно можно считать, что столкновение двух шаров абсолютно упругое, т.е. при столкновении они обмениваются импульсами.
новое направление для одного из шаров можно считать так:
N - нормаль к поверхности шара в точке столкновения (я думаю, не составит труда ее посчитать)
V - Вектор скорости шара до столкновения
Result - вектор шара после столкновения
Dot := VectorAffineDotProduct(V, N);
Result[X] := V[X] - 2 * Dot * N[X];
Result[Y] := V[Y] - 2 * Dot * N[Y];
Result[Z] := V[Z] - 2 * Dot * N[Z];
а кручение шара при ударе по касательной можно сделать читерскими методами :)
← →
bask (2004-04-22 11:46) [8]Вот, я <a href=http://www.bzonesoft.com/rus/products/billiard/index.html>написал</a> несколько лет назад для таких, как ты :)
← →
bask (2004-04-22 11:47) [9]долбаный парсер!!!
вот: http://www.bzonesoft.com/rus/products/billiard/index.html
← →
sskolot (2004-04-24 20:01) [10]такой вопрос - а как сделать "закручивание" шаров после соударения, если я знаю коэф. трения для каждой пары шаров?
← →
Shopot © (2004-04-24 23:04) [11]> bask
я туда ходил, там ниче нету :(
скинь на мыло , если еще чё осталось, plz.
← →
miek © (2004-04-24 23:54) [12]>"закручивание" шаров после соударения
Применять сложные физ-мат.модели. Которые еще надо найти и/или составить самому. У тебя все в порядке с высшей математикой?
Или, как совершенно правильно заметил Yar-Com, "читерскими" методами, подогнав какие-нибудь простые формулы под свои нужды.
← →
Yar-Com (2004-04-25 08:11) [13]"Применять сложные физ-мат.модели. Которые еще надо найти и/или составить самому. У тебя все в порядке с высшей математикой?"
Да там действительно есть некоторые сложности, вообще информации по имплементации реалистичной %) физики очень мало в инете, точнее очень мало на русском, на русском тока тер. мех. наверное =))), а на английском ищи любые труды Дэвида Барафа (David Baraff) у него есть все что нужно...
"С Дэвидом" я думаю можно написать убойный бильярд где шары даже будут вылетать из поля или можно будет делать всякие бильярдкие фишки =) и все это в 3D.
← →
bask (2004-04-25 12:17) [14]Shopot:
ссылка http://www.bzonesoft.com/rus/products/billiard/index.html работает
← →
bask (2004-04-25 12:52) [15]а, вообще, советую почитать книгу Рона Шеппарда по ОСНОВАТЕЛЬНОМУ описанию физической модели игры в пул в целом: физика столкновения шаров друг с другом, с сукном, с кием, и прочее... В книге более 100 страниц!
← →
Shopot © (2004-04-25 23:57) [16]> bask
Экзешник есть, а вот исходники... Это самое интерестное.
← →
Antichrist © (2004-04-26 00:52) [17]Исходники действительно недоступны, но дело не в том. Вопрос: как ты проверяешь возможность столкновения шариков. Каждую итерацию принцип :"каждый с каждым" или отсортированный массив, список?
← →
Antichrist © (2004-04-26 01:05) [18]вопрос 2 bask
← →
Yar-Com (2004-04-26 07:54) [19]ну шаров не так много чтоб с ними что-то делать....
так что каждый с каждым я думаю в самый раз...
← →
Shopot © (2004-04-26 22:58) [20]>Antichrist
Каждый с каждым.
for i := 0 to ...
for j := 0 to ...
if (i <. j) and Abs(Distance(Ball[i].X, Ball[i].Y, Ball[j].X, Ball[j].Y) <= 2*Rad then
begin
?????????????????
end;
Страницы: 1 вся ветка
Текущий архив: 2004.08.08;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.038 c