|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.03.2012, 21:49 | #1 |
Пользователь
Регистрация: 29.08.2011
Сообщений: 24
|
Как просчитать столкновение сферы и линии??
Привет всем, вот искал в инете статьи по теме столкновение, нашел только сфера со сферой(на делфе), но мне надо код столкновения сферы и линии, а это не нашел..
Можно собственно примерчик? Заранее спосиб. |
08.03.2012, 23:05 | #2 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Как я себе представляю надо найти перпендикуляр к линии, проходящий через центр сферы. Если он больше радиуса, то сфера и прямая не пересекаются. Если очень надо могу вспомнить как найти перпендикуляр (такие задачки решали в прошлом семестре).
|
09.03.2012, 00:05 | #3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Решите систему из 2 уравнений. Если решение есть, то объекты пересекаются. Это алгебра 7 класс...
Последний раз редактировалось Виталий Желтяков; 09.03.2012 в 00:09. |
09.03.2012, 17:55 | #4 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
В идеале нужно искать глубину проникновения капсулы образованной окружностью(в виду дискретности времени), но если пролет сквозь стену при очень больших скоростях и тормозах(dt велик) не страшен, то можно делать проверку в текущей позиции(т.е. окружности), а не размазывать её по всему интервалу времени dt.
Примечание ко второй странице: Тут я выразил t2 и t1. Если t1 лежит в пределах [0,1] то точка пересечения нормали проходящей через центр окружности(центр координат) находится на отрезке. Дальше останется только подставить это значение в первую систему и вычислить координаты точки пересечения, а потом расстояние от этой точки до центра координат, и если оно меньше радиуса окружности(r), то отрезок проник внутрь круга и имеет 2 точки пересечения с окружностью, а если ровно радиусу, то они касаются друг друга. На первой странице показано как можно найти точки пересечения окружности и отрезка. Если центр окружности находится не в центре, то нужно его туда сдвинуть. Нужно просто вычесть из все координат которые имеются на входе координаты центра окружности, а по завершению прибавить их к ответу. В общем двигаем систему координат так как нам удобно. Последний раз редактировалось Kostia; 09.03.2012 в 18:08. |
09.03.2012, 22:23 | #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 |