![]() |
Оптимальный способ проверить находится ли объект между точками знаете?
Вопрос в оглавлении. Я вот пользуюсь xLinePick. Сейчас надо делать до 100 таких проверок за проход.Это медленно. Есть альтернатива этой команде?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
гугли "расстояние от точки до прямой". Если не понимаешь, зачем это - лучше продолжай делай пиками :D
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Векторы?
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)) { ... } |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Reizel, как это можно использовать при нахождении объекта?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
dsd, а как провести вектор от точки до объекта, который как раз между точками? Получется надо строить кучу векторов от точки до каждого объекта сцены, так?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Цитата:
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Может xLinePick(xyz откуда, xyz до куда) вернет entity
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Если вычислять расстоянием от прямой до точки, то все потенциальные объекты нужно перебрать, очевидно.
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
стремно нету маски например по entitytype
UPD не ну пусть делает по такому алгоритму пустить луч, если он что то нашел, если это искомый объект - то да он находится между, если это другой объект, то пустить луч еще раз только уже от этого другого, и так до тех пор пока искомый объект не найдется, если в итоге он вернул ноль то ниче не нашел |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Не понимаю о чем зашел разговор. Я LinePick'ом и пользуюсь, мне просто интерестно есть ли что то быстрее этого? Мож в ксорсе что то по быстрее есть, или библиотеки какие новые появились.
dsd, ты наверно в голове и код игры пишешь и публикуешь в голове и ганарары тоже в голове получаешь?)) Не ну серьёзно, не пойму ударов по твоему лицу ладоней. |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
а с чего ты взял что медленно? Быстрее RayCastинга вроде нет ниче.. да и небывает наверное.
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
CRASHER
Подозреваю что xLinePick, как впрочем и весь рейтрейсинг в хорсе, перебирает все ентити в сцене, поэтому не так быстро как тебе хочется. Используй физический движок (кажется там встроен Bullet), либо почитай про space partitioning (Sweep & Prune, BVH, Octree, BSP, KD-Tree и подобное) и сделай сам :) Выбор метода зависит от сцены, динамическая она или статическая, и какие в ней объекты. |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
физика там есть тока вот не риализовано там на основе физики вся эта лабуда. Как вариант пилить самому физ движок под ксорс
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
pozitiffcat, а во вспомнил RayCast точно, вроде оно.
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Цитата:
Физика в Ксорсе основана на Буллите. А тот использует и BVH, и sweep and prune, и что-то еще, инфа 100%. Последнее предложение вообще на грани фантастики. |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Ха, доставило. Тема:
Оптимальный способ проверить находится ли объект между точками знаете? Сказал же, сходи погугли расстояние от точки до прямой. прямая задается простейшим уравнением. Объект представим точкой и диаметром - из этого можно посчитать расстояние от центра до линии, образованной этими вашими двумя точками. А там уже условием отсекать лишнее г-но. Учите матан. Движок собрались писать физический. *facepalm* |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Не ну где тогда реализованая функция RayCast в физике. Я не дурак. И в курсе что на буллете основано. Я тоже могу запиилть двиг и присобачить к нему буллет (образно), но это не значит, что я вынесу все функции буллета в свою ддл. Так и у тебя. Оно там есть, но не реализовано в твоей длл!
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Цитата:
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
docs/html/group__px__raycast.html
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Цитата:
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
FireOwl,Да какая разница заголовок оглавление.
Reizel, вот ненавижу тут вопросы задавать, обязательно учить будут, но помоч может только умный. Пост первый надо внимательнее прочитать. Я не стал вписывать в ЗАГОЛОВОК LinePick термин. И хотел узнать в конечном счете ему альтернативу. Формулу пор точку ч прямой, я и так использую постоянно. А вот pozitiffcat помог, вспомнил про рейкаст. Я помню с физикса что была какая то система. Но визуально найти не смог. Вот теперь буду рейкасты мучить. |
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
FireOwl, оглавление может содержать и один заголовок. Тем самым он приравнивается к нему.
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
|
Ответ: Оптимальный способ проверить находится ли объект между точками знаете?
Доброго времени суток, уважаемый ТС!
Попробуйте старый проверенный способ (действует лишь при наличии трех точек): коль даны точки А и В, а объект находится в точке С, логично соединить точки тремя отрезками и получить треугольник. А потом уже вступает в дело "точность" - если вам необходимо, чтобы объект находился точно на отрезке АВ - задайте некую delta = 0, коль "точность" нужна поменьше - задайте delta = AABB.diag (какое-нибудь расстояние в пределах ААВВ объекта, например - длинна отрезка от левого нижнего спереди до правого верхнего угла сзади ААВВ). И вот когда у вас будет три отрезка - АВ, АС, ВС и delta - можете сделать следующую проверку: if (AC + BC <= AC + delta) // объект между точками Здесь, АС, ВС и АС - числа, представляющие длинну соответствующего отрезка. Насколько мне известно, работать будет довольно шустро. |
Часовой пояс GMT +4, время: 10:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot