Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.08.2015, 08:00
Marlin вне форума Посмотреть профиль Отправить личное сообщение для Marlin Найти все сообщения от Marlin
  № 1  
Ответить с цитированием
Marlin

Регистрация: Feb 2014
Сообщений: 57
По умолчанию Сместить мяч при отскоке от стены , чтобы убрать погрешность

Здравствуйте, появилась проблема, мяч летит в стену под углом,

при ударении в стену, он немного "входит" в нее(получается 2 точки пересечения со стеной), нужно СМЕСТИТЬ его обратно (по направлению противоположному вектору движения) на такое расстояние чтобы была одна точка соприкосновения со стеной, и уже потом менять вектор движения как угол падения = углу отражения. Так вот каким образом найти это СМЕЩЕНИЕ, чтобы не накапливалась ошибка.

Старый 20.08.2015, 08:12
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Найти точку пересечения отрезка стены с отрезком перемещения мяча.
http://stackoverflow.com/questions/5...ents-intersect

Старый 20.08.2015, 10:34
Marlin вне форума Посмотреть профиль Отправить личное сообщение для Marlin Найти все сообщения от Marlin
  № 3  
Ответить с цитированием
Marlin

Регистрация: Feb 2014
Сообщений: 57
Вот нарисовал рисунокНазвание: ball.png
Просмотров: 380

Размер: 19.6 Кб

О2 - точка где сейчас мяч, должен он в итоге оказаться в О1, чтобы его можно было из этой точки отразить.
O2A - дистанция между центром мяча и стеной,
O2B - радиус мяча,
A - точка идеального касания мяча и стены(когда мяч не вошел в стену и центр его в О1)

V - вектор скорости мяча,
нужно найти вектор O2 - O1, Он равен DB.

Цитата:
Сообщение от callme Посмотреть сообщение
Найти точку пересечения отрезка стены с отрезком перемещения мяча.
как видно из рисунка, точка С - не точка касания, и соответственное ее нахождение ничего не даст, а хотя нет, с помощью нее можно будет найти длину O2C , и по пропорции треугольников ADB и ACO2 найти DB, щас буду пробовать..


Последний раз редактировалось Marlin; 20.08.2015 в 10:47.
Старый 20.08.2015, 11:07
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
В общем случае задачу решает ТРО(Теорема о разделяющих осях)Она дает вектор наикротчайшего выхода одного тела из другого.В инете был супер годный мануал по ней на примере игры N но похоже его выпилили.Очень жаль.Может у кого-нибудь бэкап сохранился? Такие статьи нельзя терять

Старый 20.08.2015, 12:03
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Может эта статья вам поможет http://www.flasher.ru/forum/blog.php?b=182

Старый 20.08.2015, 12:12
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 6  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
Сообщение от undefined Посмотреть сообщение
В общем случае задачу решает ТРО(Теорема о разделяющих осях)Она дает вектор наикротчайшего выхода одного тела из другого.В инете был супер годный мануал по ней на примере игры N но похоже его выпилили.Очень жаль.Может у кого-нибудь бэкап сохранился? Такие статьи нельзя терять
это был всего лишь перевод. http://www.metanetsoftware.com/technique/tutorialA.html
http://www.dyn4j.org/2010/01/sat/

тро не делает того, что нужно тсу.

Старый 20.08.2015, 12:14
Marlin вне форума Посмотреть профиль Отправить личное сообщение для Marlin Найти все сообщения от Marlin
  № 7  
Ответить с цитированием
Marlin

Регистрация: Feb 2014
Сообщений: 57
Цитата:
Сообщение от samana Посмотреть сообщение
Может эта статья вам поможет http://www.flasher.ru/forum/blog.php?b=182
в этом примере, они выталкивают шар - вдоль нормали, у меня это О2B , и если вытолкнуть на величину проникновения, то получается небольшая погрешность, которая во многих приложениях не так уж важна, то есть шар окажется не в той позиции откуда он прилетел, а немного смещен, мне важно чтобы он вернулся именно в ту позицию откуда прилетел (O2).


Последний раз редактировалось Marlin; 20.08.2015 в 12:26.
Старый 20.08.2015, 12:29
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 8  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
это был всего лишь перевод.
Спасибо, схоронил
Цитата:
тро не делает того, что нужно тсу.
Цитата:
нужно СМЕСТИТЬ его обратно (по направлению противоположному вектору движения) на такое расстояние чтобы была одна точка соприкосновения со стеной, и уже потом менять вектор движения как угол падения = углу отражения.
Как раз задача для ТРО.
Или не устраивает,что вектор наикротчайшего выхода(ВНВ) не всегда будет колинеарен направлению движения?Тогда можно считать проекцию ВНВ на скорость и двигать шар на полученный результат.Хотя если шар не слишком быстро носится ВНВ будет почти параллелен скорости.

Старый 20.08.2015, 12:44
Marlin вне форума Посмотреть профиль Отправить личное сообщение для Marlin Найти все сообщения от Marlin
  № 9  
Ответить с цитированием
Marlin

Регистрация: Feb 2014
Сообщений: 57
Цитата:
Сообщение от undefined Посмотреть сообщение

Или не устраивает,что вектор наикротчайшего выхода(ВНВ) не всегда будет колинеарен направлению движения?Тогда можно считать проекцию ВНВ на скорость
проекция ВНВ не будет равна длине О1О2

Цитата:
Сообщение от undefined Посмотреть сообщение
Хотя если шар не слишком быстро носится ВНВ будет ПОЧТИ параллелен скорости.
шар носится не быстро, но много ударяется, и нужно чтобы он после множества ударов двигался без погрешности. А это ПОЧТИ - накопление погрешности.

Старый 20.08.2015, 13:04
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 10  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
проекция ВНВ не будет равна длине О1О2
Почему же не будет? На твоем рисунке ВНВ - это отрезок BD. Спроецировав его на вектор V,как раз получим вектор против направления движения, выводящий шар из положения O2 так, что будет ровно 1 точка касания т.е. в положение O1

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.