Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

Выталкивание точки из бокса.   Найти похожие ветки 

 
@!!ex_   (2007-06-22 18:11) [0]

Есть точка. Известно, что она внутри бокса.
Вопрос, как найти направление и расстояние на которое нужно переместить точку, чтобы точка оказалась вне бокса и при этом, чтобы это расстояние было минимальным.


 
Desdechado ©   (2007-06-22 18:13) [1]

Бокс какую форму имеет? Пространственных измерений сколько?


 
antonn ©   (2007-06-22 18:14) [2]

скорее всего паралеллепипед


 
TUser ©   (2007-06-22 18:14) [3]

Бокс - многоугольник? Тогда перебрать все расстояния до сторон. Пофиксить по поводу вершин. Внутри или снаружи, - это уже не важно, между ними нет разницы.

Или многогранник? Тогда до граней.


 
Desdechado ©   (2007-06-22 18:15) [4]

TUser ©   (22.06.07 18:14) [3]
Про выпуклость и самопересечение ничего не написано.


 
TUser ©   (2007-06-22 18:26) [5]

> Про выпуклость и самопересечение ничего не написано.

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


 
@!!ex_   (2007-06-22 18:29) [6]

Паралеллепипед

Что имеется ввиду под:
Пофиксить по поводу вершин.


 
TUser ©   (2007-06-22 18:52) [7]

Расстояние до каждой грани есть минимум из след. велиичн
1. Длины перпендикуляра.
2. Длин перепендикуляров до сторон.
3. Расстояний до вершин.

Надо найти минимум всех этих штук. Если я правильно понял.


 
@!!ex_   (2007-06-22 19:11) [8]

> 1. Длины перпендикуляра.

Не понял... какого перпендикуляра??


> 3. Расстояний до вершин.

Но ведь расстояние до ближайшей плоскости всегда меньше чем расстояние до ближайшей вершины, если точка внутри...


 
Юрий Зотов ©   (2007-06-22 19:14) [9]

Для прямоугольника - наименьший из перепендикуляров до сторон.


 
TUser ©   (2007-06-22 19:25) [10]

> Не понял... какого перпендикуляра??

До грани.

> Но ведь расстояние до ближайшей плоскости всегда меньше
> чем расстояние до ближайшей вершины, если точка внутри...

Меньше или равно. Но расстонием до плоскости может быть длина перпендикуляра к плоскости, который пересекается с плоскостью вовсе не в той точке, где эта плоскость составляет грань.


 
@!!ex_   (2007-06-22 20:45) [11]

> Меньше или равно. Но расстонием до плоскости может быть
> длина перпендикуляра к плоскости, который пересекается с
> плоскостью вовсе не в той точке, где эта плоскость составляет
> грань.

Но ведь в параллелепипеде если точка находится внутри, то к каокй плоскости нормаль не опускай, все равно попадешь внутрь параллелепипеда? или я чего то не понимаю??


 
@!!ex_   (2007-06-22 20:47) [12]

Ну вобщем сутья  понял. Спасибо! Как до самого не дошло, не понятно...


 
TUser ©   (2007-06-22 20:49) [13]

> Но ведь в параллелепипеде если точка находится внутри, то к каокй плоскости нормаль не опускай, все равно попадешь внутрь параллелепипеда?

Пе обязательно. Проще поэкспериментировать с треугольками, у которых есть тупой угол. Параллелипипед - это будет обобщение.


 
Однокамушкин   (2007-06-22 22:16) [14]


> TUser ©   (22.06.07 20:49) [13]
> Пе обязательно. Проще поэкспериментировать с треугольками,
>  у которых есть тупой угол. Параллелипипед - это будет обобщение.

Пусть у нас есть перпендикуляр к стороне (1), и этот перепендикуляр пересекает прямую, содержащую сторону, за пределами стороны (1)... Но этот перпендикуляр по дороге пересечёт некоторую другую сторону (2), значит, перпендикуляр, опущенный на сторону (2), будет короче, чем перпендикуляр к стороне (1)... из этого очевидно, что самый короткий из перпендикуляров пересечёт сторону, на которую он опущен, в пределах многоугольника, а следовательно, нет нужды заморачиваться на выяснение того, где какой перпендикуляр пересекает сторону, а просто выбрать самый меньший из них...


 
homm ©   (2007-06-22 22:32) [15]

> Выталкивание точки из бокса.

Блин, а по рууски умеем изъясняться?
Только дурак станет выпихивать точку из коробки.


 
@!!ex_   (2007-06-23 10:10) [16]

> [15] homm ©   (22.06.07 22:32)

Расслабься. Задача именно такая. Collision Detection реализую вот и все.
А как по твоему надо было сформулировать? :))


 
TUser ©   (2007-06-23 11:36) [17]

> Пусть у нас есть перпендикуляр к стороне (1), и этот перепендикуляр
> пересекает прямую, содержащую сторону, за пределами стороны
> (1)... Но этот перпендикуляр по дороге пересечёт некоторую
> другую сторону (2), значит, перпендикуляр, опущенный на
> сторону (2), будет короче, чем перпендикуляр к стороне (1).
> .. из этого очевидно, что самый короткий из перпендикуляров
> пересечёт сторону, на которую он опущен, в пределах многоугольника,
>  а следовательно, нет нужды заморачиваться на выяснение
> того, где какой перпендикуляр пересекает сторону, а просто
> выбрать самый меньший из них...

Например, 4-угольник (0,0)-(0,10)-(2,2)-(10,0) и точка (1,1). Перпендикуляр из этой точки на сторону (2,2)-(10,0) не пересекает никакой другой стороны, поэтому минимальное расстояние до этого ребра равно расстоянию до вершины, а не длине перпендикуляра. С многогранниками аналогично.


 
KSergey ©   (2007-06-23 12:03) [18]

> @!!ex_   (23.06.07 10:10) [16]
> А как по твоему надо было сформулировать? :))

Слово "бокс" в этом контексте - слишком неоднозначное, осбенно учитывая, что написано по-русски.
Не надо думать только со своей колокольни :)

> homm ©   (22.06.07 22:32) [15]
> Только дурак станет выпихивать точку из коробки.

Ну, смотря что выкурить: может оказаться вполне занятным :)


 
Dmitry S.   (2007-06-23 17:36) [19]


> Расслабься. Задача именно такая. Collision Detection реализую
> вот и все.

Маловероятно, с такими вопросами


 
@!!ex_   (2007-06-23 17:48) [20]

> [19] Dmitry S.   (23.06.07 17:36)

Что маловероятнО? :)
Что реализую?
Так уже реализовано, пол года как. Для точки и треугольника. С учетом граней.
Тут задача проще, поскольку определение что точка внутри бокса -  тупо проверка расстояния с каждой плоскостью бокса. Если для всех меньше 0, значит внутри. Проблема в том, что не увидел очевидности нахождения кратчайшего расстояния вот и все.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.039 c
4-1171017251
tytus
2007-02-09 13:34
2007.07.22
Как получить доступ к контролам окна?


2-1182967542
MASReady
2007-06-27 22:05
2007.07.22
Механизм работы post в BDE и в ADO, помогите разобраться


15-1182431361
cosinus
2007-06-21 17:09
2007.07.22
SQL и DELPHI


2-1182915878
Lebedev
2007-06-27 07:44
2007.07.22
Как циклом перебрать все компоненты одного рода?


1-1179490447
stud
2007-05-18 16:14
2007.07.22
композитный отчет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский