Скольжение шаров! (посвящается RayShade :) )

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Скольжение шаров! (посвящается RayShade :) )

Сообщение KDima » 03.04.2005 (Вс) 19:10

Скольжение шаров!

Ну допустим у меня есть два шара... :( :roll: :D

Изображение

Один движется наверх, а другой вниз. И они спотыкаются :)
Как мне замутить... скольжение?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 03.04.2005 (Вс) 19:49

Изменяй абсциссы центров шаров по эллиптической функции (ну, то бишь, с небольшой прогрессией, которая сначала увеличивает (уменьшает), а затем уменьшает (увеличивает) абсциссу).
Ну и, конечно, ордината прилагается :D
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 03.04.2005 (Вс) 20:01

2 Cryonyx

Ты сам то понял, чё сказал :)

И вообще можно обойтись простым замедлением одного с одновременным ускорением другого шара...

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 04.04.2005 (Пн) 7:15

Я-то понял, да видно другие нет :D :D :D
Я имел в виду, что шары должны катиться один по другому, а не переть напролом через друг друга...
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.04.2005 (Пн) 8:03

Хм... А я то тут при чем? :?

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 04.04.2005 (Пн) 15:57

RayShade

Это идеальный топик! Всё понятно, есть картинка!

All

А если шары летят в случайном направлении?
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.04.2005 (Пн) 16:00

KDima писал(а):А если шары летят в случайном направлении?

Угол падения равен углу отражения. Из этого и исходи.
Lasciate ogni speranza, voi ch'entrate.

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 04.04.2005 (Пн) 18:31

А они липнут друг к другу или отскакивают?
Т.е. удар упругий или нет?
В любом случае надо лезть в учебник физики за 8 класс :D , если хочешь получить физически корректную модель...
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 04.04.2005 (Пн) 20:12

alibek

Я думаю догадываюсь, что знаю это :wink:

Cryonyx

Иногда :) но это неожиданный эфект :)
С физикой у меня всё ОК!
Всё работает, но ведь шары (если первый двигается вниз, а нижний вверх) Упрутся друг в друга!!! :(
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 04.04.2005 (Пн) 20:34

Чегой-то я не понял...
Тебе ведь нужно, чтоб они объезжали друг друга?
Или область их взаимодействия ограничена вот этим чёрным квадратиком? :wink:
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.04.2005 (Вт) 8:33

надо чтобы они оба "огинали" друг друга, или только один?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.04.2005 (Вт) 8:58

если только один, то вот я пример набросал

единсвенное но, которое я заметил, пример нормально работает если шары одиннакового диаметра

еть ещё одна идея, но нет времени, будет - попробую выложить
Вложения
2 шара.zip
(1.88 Кб) Скачиваний: 73

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.04.2005 (Вт) 10:47

Ну вот "упрутся" они, а дальше что должно происходить?

Если бы это были реальные шары, они бы должны были столкнуться и разлететься. Если это то, что тебе нужно, то алгоритм такой:

1. Определяешь точку касания шаров;
2. Через нее проводишь общую касательную (перпендикулярно радиусу в эту точку, если это действительно точка касания, то она лежит на прямой, соединяющей центры шаров, поэтому все равно, радиус какого шара брать);
3. Считаешь, что шары сталкиваются не друг с другом, а с "бортиком", который представляет эта касательная. Чтобы вычислить движение каждого шара дальше, просто вычисяешь угол падения к касательной, откладываешь такой же угол отражения и двигаешь шар.

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 05.04.2005 (Вт) 12:25

Cryonyx писал(а):А они липнут друг к другу или отскакивают?
Т.е. удар упругий или нет?
В любом случае надо лезть в учебник физики за 8 класс :D , если хочешь получить физически корректную модель...

В моем учебнике этого нет :)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.04.2005 (Вт) 13:53

uhm писал(а):Если бы это были реальные шары, они бы должны были столкнуться и разлететься. Если это то, что тебе нужно, то алгоритм такой:

1. Определяешь точку касания шаров;
2. Через нее проводишь общую касательную (перпендикулярно радиусу в эту точку, если это действительно точка касания, то она лежит на прямой, соединяющей центры шаров, поэтому все равно, радиус какого шара брать);
3. Считаешь, что шары сталкиваются не друг с другом, а с "бортиком", который представляет эта касательная. Чтобы вычислить движение каждого шара дальше, просто вычисяешь угол падения к касательной, откладываешь такой же угол отражения и двигаешь шар.


Ты уверен :?:
Мне почему-то кажеться, что не в одном учебнике физике такой билеберды просто не может быть написано.

Доказательство: если летят два шара одинаковой массой и разными скоростями и происходит центральный, упругий удар то:

а) по твоей модели: шары отскочат друг от друга с такими же скоростями по модулю, и обратными по направлению.
б) а вот мне почему-то кажется, что они обменяются модулями скоростей.
В бильярд играл?
:roll:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.04.2005 (Вт) 14:11

Нет, топик неидеален, ибо картинка с Народа грузится жуть долго :)

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.04.2005 (Вт) 14:18

ANDLL, покажи хоть одно упоминание слова "скорость" в моем сообщении :o

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.04.2005 (Вт) 14:30

OK. Приведу тебя к этой мысли: а как бы двигались шары, при моем условии и твоей модели? Разве не так, как я описал?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.04.2005 (Вт) 14:34

Не, не так. Ты, видимо, додумал в неправильную сторону часть моего алгоритма за меня - я вообще ничего не говорил про скорости, только про направления движения. А скорости, насколько я понимаю, в общем случае вычисляются из закона сохранения импульса.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.04.2005 (Вт) 14:38

Кстати, при ударе о движущуюся стенку угол падения не равен углу отражения :!:

Так что...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.04.2005 (Вт) 14:42

Э-э, а вот с этого места поподробнее?
Точнее, так - ты хочешь сказать, что в моем алгоритме направление полета шаров после удара определяется неправильно? Если да, то как, по-твоему, его надо определять?

(замечу в скобках, что никаких движущихся стенок у меня в помине не было :) )

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 05.04.2005 (Вт) 17:07

Такие соверты я могу раздавать направо и налево (с)

Может кто приблизится к математике?
Семпл... такой написать не проблема! Но бильярд не сделаешь!

RayShade

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

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.04.2005 (Вт) 18:20

uhm писал(а):Точнее, так - ты хочешь сказать, что в моем алгоритме направление полета шаров после удара определяется неправильно?


Да.
uhm писал(а):(замечу в скобках, что никаких движущихся стенок у меня в помине не было :) )[/

Это так, к слову...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 05.04.2005 (Вт) 18:35

Углы a и b - углы между скоростями шаров и прямой, соединяющей их центры соответственно. Думаю, найдеш сам. A и B - скорости шаров соответственно.
Ax=A*cosa; Ay=A*sina; Bx=B*cosb; By=B*sinb

Теперь мы имеем, что A2x=Bx; B2x=Ax; A2y=Ay; B2y=By => a2=atan(A2y\A2x); b2=atan(B2y\B2x); A2=A2x/cos(a2); B2=B2x/cos(b2)

Вроде бы так, но сам, как понимаешь, не проверял...

Кстати, это все при условии, что Ma=Mb.
Изображение
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.04.2005 (Ср) 9:48

ANDLL, да, все так. То, что написал я - неправильно (как я теперь понимаю, это описание какого-то сильно частного случая).

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 06.04.2005 (Ср) 11:50

Случай, если Ma>>Mb, шар A - неподвижный.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 27

    TopList