Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 21.02.2014, 05:02   #1
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,745
Написано 2,136 полезных сообщений
(для 4,978 пользователей)
Проверка нахождения объекта внутри другого

Нужно проверить находится ли объект внутри ограничительного бокса. Не как не могу понять как это сделать.
Проверять по радиусу от центра бокса не получится, ведь это не сфера. На булке ничего подходящего не нашёл. Использовать типо MeshWidth, MeshHeight, MeshDepth? Скорость выполнения неважна, т. к. не для реал тайма.

Прошу помочь с алгоритмом, спасибо.
(Offline)
 
Ответить с цитированием
Старый 21.02.2014, 05:10   #2
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,888
Написано 1,183 полезных сообщений
(для 3,292 пользователей)
Ответ: Проверка нахождения объекта внутри другого

Есть такой код от H@NON вроде. Типа система тригеров.
Вложения
Тип файла: rar 14_TriggerSystem.rar (1.9 Кб, 219 просмотров)
(Offline)
 
Ответить с цитированием
Старый 21.02.2014, 08:25   #3
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,924
Написано 2,170 полезных сообщений
(для 5,916 пользователей)
Ответ: Проверка нахождения объекта внутри другого

ну чего тут думать то
Если Х искомой точки больше min X бокса и меньше max X бокса, значит точка в боксе по оси Х. Такие же проверки по YZ. Это для AABB.
Если бокс ротированный (OBB), то надо сначала умножить точку на инверсию его ротации (матрицу, кватернион), чтобы привести её в пространство бокса а дальше проверять так же как с AABB.
Если надо проверить нахождение в боксе не точки а другого бокса, то проверяешь все точки этого другого бокса. Или там даже все точки меша, если совсем точно надо.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (21.02.2014)
Старый 21.02.2014, 11:29   #4
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,570
Написано 545 полезных сообщений
(для 1,529 пользователей)
Ответ: Проверка нахождения объекта внутри другого

Для AABB
Function IsPointInsideAABB%( point, box )
    ; point - объект
    ; box - проверяемый объем
    Local px#=EntityX#( point, true )
    Local  py#=EntityY#( point, true )
    Local  pz#=EntityZ#( point, true )

    Local  bx#=EntityX#( box, true )
    Local  by#=EntityY#( box, true )
    Local  bz#=EntityZ#( box, true )

    Local  hw#=MeshWidth#(box)
    Local  hh#=MeshHeight#(box)
    Local  hd#=MeshDepth#(box)

    If px > ( bx + hw ) or px < x Then
      Return 0
    End If
    If py > ( by + hh ) or py < y Then
      Return 0
    End If
    If pz > ( bz + hd ) or pz < z Then
      Return 0
    End If

    Return 1

End Function
Синтаксис блица не помню, но вроде правильно
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 21.02.2014, 17:23   #5
Wegox
Бывалый
 
Аватар для Wegox
 
Регистрация: 16.12.2011
Сообщений: 862
Написано 443 полезных сообщений
(для 1,133 пользователей)
Ответ: Проверка нахождения объекта внутри другого

Сообщение от Arton Посмотреть сообщение
Нужно проверить находится ли объект внутри ограничительного бокса. Не как не могу понять как это сделать.
Проверять по радиусу от центра бокса не получится, ведь это не сфера. На булке ничего подходящего не нашёл. Использовать типо MeshWidth, MeshHeight, MeshDepth? Скорость выполнения неважна, т. к. не для реал тайма.

Прошу помочь с алгоритмом, спасибо.
Было - было, вот там burovalex'а слушай.
__________________
W.E.G.Ox.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (21.02.2014)
Старый 21.02.2014, 18:44   #6
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,745
Написано 2,136 полезных сообщений
(для 4,978 пользователей)
Ответ: Проверка нахождения объекта внутри другого

Всем спасибо, прошу прощения что создал эту тему. Плохая идея не спать по ночам, голова не варит.

У Wegox оказывается готовый код идеально подходящий под решение моей задачи. Был вчера в той теме, но слона и не приметил.

Wegox, огромное спасибо
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Wegox (21.02.2014)
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 01:17.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com