![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 29.08.2011
Сообщений: 24
|
![]()
Привет всем, вот искал в инете статьи по теме столкновение, нашел только сфера со сферой(на делфе), но мне надо код столкновения сферы и линии, а это не нашел..
Можно собственно примерчик? Заранее спосиб. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Как я себе представляю надо найти перпендикуляр к линии, проходящий через центр сферы. Если он больше радиуса, то сфера и прямая не пересекаются. Если очень надо могу вспомнить как найти перпендикуляр (такие задачки решали в прошлом семестре).
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Решите систему из 2 уравнений. Если решение есть, то объекты пересекаются. Это алгебра 7 класс...
Последний раз редактировалось Виталий Желтяков; 09.03.2012 в 00:09. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
![]()
В идеале нужно искать глубину проникновения капсулы образованной окружностью(в виду дискретности времени), но если пролет сквозь стену при очень больших скоростях и тормозах(dt велик) не страшен, то можно делать проверку в текущей позиции(т.е. окружности), а не размазывать её по всему интервалу времени dt.
Примечание ко второй странице: Тут я выразил t2 и t1. Если t1 лежит в пределах [0,1] то точка пересечения нормали проходящей через центр окружности(центр координат) находится на отрезке. Дальше останется только подставить это значение в первую систему и вычислить координаты точки пересечения, а потом расстояние от этой точки до центра координат, и если оно меньше радиуса окружности(r), то отрезок проник внутрь круга и имеет 2 точки пересечения с окружностью, а если ровно радиусу, то они касаются друг друга. На первой странице показано как можно найти точки пересечения окружности и отрезка. Если центр окружности находится не в центре, то нужно его туда сдвинуть. Нужно просто вычесть из все координат которые имеются на входе координаты центра окружности, а по завершению прибавить их к ответу. В общем двигаем систему координат так как нам удобно. Последний раз редактировалось Kostia; 09.03.2012 в 18:08. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 29.08.2011
Сообщений: 24
|
![]()
Что то не выходит((
Код:
X, Y, Z - координаты перса xline, yline, zline, xline1, yline1, zline1 -векторы линии distance, distance1 - расстояние перса к точкам а distance3 -расстояние между точками. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в OpenGL сделать свет (прожектор) исходящий от объекта (сферы) | Mindzor | Общие вопросы C/C++ | 3 | 19.09.2010 14:25 |
Как сделать столкновение объекта с формой | yakimchukav | Помощь студентам | 2 | 23.09.2009 19:31 |
Как просчитать хэш файла? | ArtUrlWWW | Общие вопросы .NET | 1 | 27.05.2009 16:06 |
[Delphi] Как предотвратить столкновение обьектов | Kolhan | Помощь студентам | 2 | 03.05.2009 14:17 |