Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2008, 15:26   #1
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию вижение объекта

Нужно что бы картинка не проходила через другую картинку при передвижении (нужно чтобы было столкновение)
BuT@JL вне форума Ответить с цитированием
Старый 28.11.2008, 16:04   #2
Deller
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 14
По умолчанию

371868291 - стучись решим с нуля.
Deller вне форума Ответить с цитированием
Старый 28.11.2008, 16:49   #3
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

В простом варианте это должно выглядеть примерно так:
XPic1, YPic1 - координаты 1-го рисунка
XPic2, YPic2 - 2-го
При горизонтальном движении слева направо даешь приращение(dx) к Х координате 1-го рисунка - XPic1:= XPic1 + dx и проверяешь не "наполз" ли 1-й рисунок на второй:
Код:
//поверить совпадение по Х и проверка по Y
if ((YPic1 >= YPic2)  and (YPic1 <= (YPic2 + Pic2.Height)))  or
  ((YPic1 + Pic1.Height) >= YPic2) and ((YPic1 + Pic1.Height) <= (Ypic2 + Pic2.Height))) then
Eсли условие верно - стоп движение ("столкновение"), в противном случае делаешь еще одно перемещение на шаг dx и снова проверка.Можно применить цикл с условием.При движении справа налево нужно учитывать Width рисунка.
При движении по вертикали аналогично, поменять только X и Y местами.
Для конкретного кода надо и конкретные условия задачи.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 28.11.2008, 19:25   #4
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Так же можно задавать радиус и центр картинки и считать, чтоб растояние между центрами было больше суммы радиусов, иначе столкновение (это если объекты более сферообразны).

Только имейте ввиду, что эти способы (с дискретным приращением, указаный выше например) обладают одним существенным недостатком: если скорость движения сильно больше размера картинки, то они могут "проскочить" сквозь друг друга без столконовения на очередной итерации процесса движения. Движение то дискретное в такой модели. Если Вы моделируете физические процессы, то вам надо высчитывать траектории на каждой итерации и при пересечении вычислять момент столкновения.

Но для простой проги типа "скачущие шарики" это подходит.
theos вне форума Ответить с цитированием
Старый 28.11.2008, 19:35   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Здесь алгоритмов уйма.Можно, зная направление движения, по координатам просчитать расстояние до "места встречи" и затем определить количество итераций движения до столкновения. Т.е. все таки надо знать более конкретно условия задачи.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамичесое создание объекта Черничный Общие вопросы Delphi 8 29.06.2008 23:01
Автоматическое уничтожение объекта mutabor Общие вопросы Delphi 6 25.06.2008 22:25
EnumWindows внури объекта King Nothing Win Api 10 24.06.2008 07:43
Определение цвета объекта Tan4ik Помощь студентам 4 16.06.2008 15:53
Свойства объекта KBak Win Api 5 15.08.2007 20:21