Оптимальный способ проверить находится ли объект между точками знаете?
Вопрос в оглавлении. Я вот пользуюсь 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%. Последнее предложение вообще на грани фантастики. |
Часовой пояс GMT +4, время: 21:20. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot