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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 17.11.2011, 22:15   #1
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Оптимальный способ проверить находится ли объект между точками знаете?

Вопрос в оглавлении. Я вот пользуюсь xLinePick. Сейчас надо делать до 100 таких проверок за проход.Это медленно. Есть альтернатива этой команде?

Последний раз редактировалось CRASHER, 18.11.2011 в 16:28.
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 00:46   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

гугли "расстояние от точки до прямой". Если не понимаешь, зачем это - лучше продолжай делай пиками :D
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 02:41   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 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
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Reizel, как это можно использовать при нахождении объекта?
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 16:27   #5
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

dsd, а как провести вектор от точки до объекта, который как раз между точками? Получется надо строить кучу векторов от точки до каждого объекта сцены, так?
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 16:49   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Сообщение от CRASHER Посмотреть сообщение
dsd, а как провести вектор от точки до объекта, который как раз между точками? Получется надо строить кучу векторов от точки до каждого объекта сцены, так?
В своей голове ты его проводишь. В уме. :facepalm:
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 16:51   #7
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Может xLinePick(xyz откуда, xyz до куда) вернет entity
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 16:55   #8
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Если вычислять расстоянием от прямой до точки, то все потенциальные объекты нужно перебрать, очевидно.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 16:59   #9
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

стремно нету маски например по entitytype
UPD не ну пусть делает по такому алгоритму
пустить луч, если он что то нашел, если это искомый объект - то да он находится между, если это другой объект, то пустить луч еще раз только уже от этого другого, и так до тех пор пока искомый объект не найдется, если в итоге он вернул ноль то ниче не нашел
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 17:30   #10
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Не понимаю о чем зашел разговор. Я LinePick'ом и пользуюсь, мне просто интерестно есть ли что то быстрее этого? Мож в ксорсе что то по быстрее есть, или библиотеки какие новые появились.
dsd, ты наверно в голове и код игры пишешь и публикуешь в голове и ганарары тоже в голове получаешь?)) Не ну серьёзно, не пойму ударов по твоему лицу ладоней.
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 17:39   #11
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

физика там есть тока вот не риализовано там на основе физики вся эта лабуда. Как вариант пилить самому физ движок под ксорс
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 19:53   #14
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

pozitiffcat, а во вспомнил RayCast точно, вроде оно.
(Offline)
 
Ответить с цитированием
Старый 18.11.2011, 20:51   #15
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?

Сообщение от pozitiffcat Посмотреть сообщение
физика там есть тока вот не риализовано там на основе физики вся эта лабуда. Как вариант пилить самому физ движок под ксорс
Ваша уверенность, сударь, вызывает у меня недоумение и утомление.
Физика в Ксорсе основана на Буллите. А тот использует и BVH, и sweep and prune, и что-то еще, инфа 100%.
Последнее предложение вообще на грани фантастики.
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 06:28.


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