|
Xors3D Графический движок с поддержкой DirectX9 |
17.11.2011, 22:15
|
#1
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Оптимальный способ проверить находится ли объект между точками знаете?
Вопрос в оглавлении. Я вот пользуюсь xLinePick. Сейчас надо делать до 100 таких проверок за проход.Это медленно. Есть альтернатива этой команде?
Последний раз редактировалось CRASHER, 18.11.2011 в 16:28.
|
(Offline)
|
|
18.11.2011, 00:46
|
#2
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
гугли "расстояние от точки до прямой". Если не понимаешь, зачем это - лучше продолжай делай пиками :D
|
(Offline)
|
|
18.11.2011, 02:41
|
#3
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Векторы?
1.Вектор соединяющий точки. Вектор от точки до объекта. Считаешь их длины.
Косинус угла между векторами (x1*x2+y1*y2+z1*z2)/(|длина первого|*|длина второго|). Чем ближе значение к единице тем ближе позиция объекта к линии соединяющей точки. При единице лежит на линии.
2. Вектор от первой точки к второй назовем а. От первой точки к объекту б.
если координата икс у обоих одного знака и у б она меньше по модулю, то если отношение координат этих векторов равно, то объект лежит между точек.
Одинаковый знак если произведение координат больше равно нуля.
if ((a.x*b.x>=0) && (b.x/a.x==b.y/a.y && b.x/a.x=b.z/a.z)) { ... }
Последний раз редактировалось dsd, 18.11.2011 в 10:43.
|
(Offline)
|
|
18.11.2011, 16:24
|
#4
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Reizel, как это можно использовать при нахождении объекта?
|
(Offline)
|
|
18.11.2011, 16:27
|
#5
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
dsd, а как провести вектор от точки до объекта, который как раз между точками? Получется надо строить кучу векторов от точки до каждого объекта сцены, так?
|
(Offline)
|
|
18.11.2011, 16:49
|
#6
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Сообщение от CRASHER
dsd, а как провести вектор от точки до объекта, который как раз между точками? Получется надо строить кучу векторов от точки до каждого объекта сцены, так?
|
В своей голове ты его проводишь. В уме. :facepalm:
|
(Offline)
|
|
18.11.2011, 16:51
|
#7
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Может xLinePick(xyz откуда, xyz до куда) вернет entity
|
(Offline)
|
|
18.11.2011, 16:55
|
#8
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Если вычислять расстоянием от прямой до точки, то все потенциальные объекты нужно перебрать, очевидно.
|
(Offline)
|
|
18.11.2011, 16:59
|
#9
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
стремно нету маски например по entitytype
UPD не ну пусть делает по такому алгоритму
пустить луч, если он что то нашел, если это искомый объект - то да он находится между, если это другой объект, то пустить луч еще раз только уже от этого другого, и так до тех пор пока искомый объект не найдется, если в итоге он вернул ноль то ниче не нашел
|
(Offline)
|
|
18.11.2011, 17:30
|
#10
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Не понимаю о чем зашел разговор. Я LinePick'ом и пользуюсь, мне просто интерестно есть ли что то быстрее этого? Мож в ксорсе что то по быстрее есть, или библиотеки какие новые появились.
dsd, ты наверно в голове и код игры пишешь и публикуешь в голове и ганарары тоже в голове получаешь?)) Не ну серьёзно, не пойму ударов по твоему лицу ладоней.
|
(Offline)
|
|
18.11.2011, 17:39
|
#11
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
а с чего ты взял что медленно? Быстрее RayCastинга вроде нет ниче.. да и небывает наверное.
|
(Offline)
|
|
18.11.2011, 18:01
|
#12
|
Нуждающийся
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений (для 83 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
CRASHER
Подозреваю что xLinePick, как впрочем и весь рейтрейсинг в хорсе, перебирает все ентити в сцене, поэтому не так быстро как тебе хочется. Используй физический движок (кажется там встроен Bullet), либо почитай про space partitioning (Sweep & Prune, BVH, Octree, BSP, KD-Tree и подобное) и сделай сам Выбор метода зависит от сцены, динамическая она или статическая, и какие в ней объекты.
|
(Offline)
|
|
18.11.2011, 19:49
|
#13
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
физика там есть тока вот не риализовано там на основе физики вся эта лабуда. Как вариант пилить самому физ движок под ксорс
|
(Offline)
|
|
18.11.2011, 19:53
|
#14
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
pozitiffcat, а во вспомнил RayCast точно, вроде оно.
|
(Offline)
|
|
18.11.2011, 20:51
|
#15
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Сообщение от pozitiffcat
физика там есть тока вот не риализовано там на основе физики вся эта лабуда. Как вариант пилить самому физ движок под ксорс
|
Ваша уверенность, сударь, вызывает у меня недоумение и утомление.
Физика в Ксорсе основана на Буллите. А тот использует и BVH, и sweep and prune, и что-то еще, инфа 100%.
Последнее предложение вообще на грани фантастики.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:09.
|