Hellfim, если код который я привел выше рабочий то лучше оставить его.
Потому что нормализация вектора это скрытый sqrt, магнитуда и т д. А тупо сделать три деления побыстрее. Я вот чем руководствуюсь.
В общем то проверим
Из первого поста Hellfim смекнулось, добавил пару формул вычисления детерминанта для плоскости и пространства
В общем вот такие функции вышли
public static float Determinant2x2(float a, float b, float c, float d)
{
return a * d - b * c;
}
public static float Determinant2x2(float[,] i2xj2)
{
var m = i2xj2;
return Determinant2x2(
m[0, 0], m[0, 1],
m[1, 0], m[1, 1]);
}
public static float Determinant3x3(float a11, float a12, float a13, float a21, float a22, float a23, float a31,
float a32, float a33)
{
return a11*Determinant2x2(a22, a23, a32, a33)
- a12*Determinant2x2(a21, a23, a31, a33)
+ a13*Determinant2x2(a21, a22, a31, a32);
}
public static float Determinant3x3(float[,] i3xj3)
{
var m = i3xj3;
return Determinant3x3(
m[0, 0], m[0, 1], m[0, 2],
m[1, 0], m[1, 1], m[1, 2],
m[2, 0], m[2, 1], m[2, 2]);
}
GeneralElConsul,
эт понятно, я уже вписал ее. Вот так же выходит, верно?
public static bool Straight(Vector3 a1, Vector3 a2, Vector3 b1, Vector3 b2)
{
var a = (a2 - a1);
var b = (b2 - b1);
var c = new Vector3(a.x/b.x, a.y/b.y, a.z/b.z);
return c.x.EqualsApprox(c.y) && c.y.EqualsApprox(c.z);
}
двойное скалярное и двойное векторное произведение, а не тройное
а почему не тройное то? разницы нет никакой. Открываем гугл и узнаем что эти понятия эквиваленты. А на английском он называется Triple Product, что как бы намекает. GeneralElConsul, сверить то можно, а вот как сделать так, чтобы узнать в какой точке это произошло? Формула выше как бы учитывает это тоже, там out параметрами возврат точки идет
nvc123, что? отменить премодерацию через метки? Кинь скрин плиз, как это делается, если такое реально есть, то это всё меняет :О
насколько я со всем этим знаком - премодерация распространяется на весь проект (точнее на группы юзеров). Либо ставится, либо снимается. В этом собственно и проблема.
Kozinaka, да есть + сами юниты динамичные, меняют проходимость. В общем то приценился на дальнейшими действия. Сейчас попробуем-с, по надобности обновим сабж. Решил-таки попробовать еще раз в эвристику.
А в целом наверное так и выходит, что запекание в глубину как раз даст то самое "(N*Log(N)) количество данных" или близкое к этому, на этом пока что и закончим
ScorpioT1000, есть два формата в текущем виде
1 - зафигачить в add (так уже пробовали, спасибо). Минус уйма. Начиная с обязательной премодерации подобного, заполнением каких-то лого и отсутствием нормального адекватного способа посмотреть объем новых вакансий
2 - зафигачить комментами (как сейчас). Минусов опять уйма. Нельзя редактировать многим после, нельзя адекватно посмотреть объем новых вакансий.
Оба способа отвратительны. Я просто сделал тот способ, который не будет тормозиться онлайном менеджеров/модераторов. Так что ждем, пока что-то изменится, а пока пользуемся этим.
Kozinaka, ты построил навмеш в плоскости, грубо говоря. Основное правило навмеша - обеспечение 100% проходимости в рамках определенной области. Ну и области на пересечениях "стыкуются". Хотя тут у тебя есть хитрость, получается несколько уровней под просчет путей.
Но у меня тут немного другая история. Я пробовал генерировать навмеш под свои нужды, но он выходит весьма накладным в плане производительности.
Затем я думал заюзать эвристический алгоритм. Но как ты можешь увидеть на скрине ниже - у меня многоуровневый ланд, потому хорошего способа юзать эвристику не нашел.
Вот и подумал что не лучше бы в запекание. Места "стыков" у поверхностей часто не однозначны (особенно там, где стыки поверхностей выражены несколькими точками).
Потому и надумал - запекать всю карту неразрывно.
Большую карту опять же сделать не могу - в этом случае препятствия, существующие диагонально будут иметь очень кривую проходимость. А мне нужно не мир подстроить под алгоритм, а наоборот, алгоритм под мир.
Или я неправильно понял, что ты имел ввиду
В общем и не знаю что и делать. В идеале хотел конечно поиск по рукавам юзнуть, и будь что будет. Но есть много разных вариантов, которые я не смог проработать на многоуровневом поиске, в частности как детектить правильные препятствия и как быстро находить переход на другой этаж.
alexprey, я гипотетически привел в пример поле 100 на 100, чтобы показать масштабы, в которых происходит запекание. Вот будет поле скажем 1000 х 1000 - 1000000 ячеек сохранено. А я тут даже ошибся чутка. Ведь сама экспоненция уже будет 1000000*1000000 - чисто ради запекания. Это несоизмеримо много. Ну не ок же. Потому и спрашиваю, мб есть какие-то фишки/трюки, чтобы сделать как бы почти тоже самое, но хранить меньше данных.
alexprey, конкретно моя задача - статичное запекание, которое делается не в игре, а еще в редакторе. То есть где позволительно тратить неприлично большие силы на просчет чего-либо.
Вопрос лишь в том, чтобы хранить меньше данных при хотя бы чуток схожем КПД (О(1))
PhysCraft, принято запекать чтобы не обсчитывать пути постоянно на локациях с большим количеством юнитов и высокой частотой расчетов. Таким образом скорость нахождения пути равна О(1), а не О(N)
» Unity / Класс с математикой
Потому что нормализация вектора это скрытый sqrt, магнитуда и т д. А тупо сделать три деления побыстрее. Я вот чем руководствуюсь.
В общем то проверим
В общем вот такие функции вышли
» Unity / Класс с математикой
эт понятно, я уже вписал ее. Вот так же выходит, верно?
Ред. Devion
» Unity / Класс с математикой
GeneralElConsul, сверить то можно, а вот как сделать так, чтобы узнать в какой точке это произошло? Формула выше как бы учитывает это тоже, там out параметрами возврат точки идет
Ред. Devion
» Unity / Класс с математикой
» Программирование / Организация Undo/Redo
Скажем объект-действие "очистки" имеет:
» Программирование / Подменить DLL
» Game Dev / нужно вакансии
Гораздо удобнее, имхо. Описание читают только если интересна вакансия. И ок.
» Game Dev / нужно вакансии
Ред. Devion
» Game Dev / нужно вакансии
насколько я со всем этим знаком - премодерация распространяется на весь проект (точнее на группы юзеров). Либо ставится, либо снимается. В этом собственно и проблема.
» Game Dev / Запекание ячеек в поиске пути
Ред. Devion
» Game Dev / Запекание ячеек в поиске пути
В общем то приценился на дальнейшими действия. Сейчас попробуем-с, по надобности обновим сабж. Решил-таки попробовать еще раз в эвристику.
А в целом наверное так и выходит, что запекание в глубину как раз даст то самое "(N*Log(N)) количество данных" или близкое к этому, на этом пока что и закончим
» Cinos WIP блог / Привет, армия
» Game Dev / нужно вакансии
1 - зафигачить в add (так уже пробовали, спасибо). Минус уйма. Начиная с обязательной премодерации подобного, заполнением каких-то лого и отсутствием нормального адекватного способа посмотреть объем новых вакансий
2 - зафигачить комментами (как сейчас). Минусов опять уйма. Нельзя редактировать многим после, нельзя адекватно посмотреть объем новых вакансий.
Ред. Devion
» Game Dev / Запекание ячеек в поиске пути
Но у меня тут немного другая история. Я пробовал генерировать навмеш под свои нужды, но он выходит весьма накладным в плане производительности.
Затем я думал заюзать эвристический алгоритм. Но как ты можешь увидеть на скрине ниже - у меня многоуровневый ланд, потому хорошего способа юзать эвристику не нашел.
Потому и надумал - запекать всю карту неразрывно.
Большую карту опять же сделать не могу - в этом случае препятствия, существующие диагонально будут иметь очень кривую проходимость. А мне нужно не мир подстроить под алгоритм, а наоборот, алгоритм под мир.
» Game Dev / Запекание ячеек в поиске пути
» Game Dev / Запекание ячеек в поиске пути
Вопрос лишь в том, чтобы хранить меньше данных при хотя бы чуток схожем КПД (О(1))
Ред. Devion
» Game Dev / Запекание ячеек в поиске пути
Ред. Devion
» [Gameвoom] Иная Новогодняя Сказка / Отчёт №2
» [Gameвoom] Иная Новогодняя Сказка / Отчёт №2
Ред. Devion
» Unity - Triggers Editor / 99%
» Unity - Triggers Editor / 99%
» Unity - Triggers Editor / 99%
Могу сделать две версии переключателем каскад/линия. Пойдет?
» Unity - Triggers Editor / 99%
Ред. Devion
» Unity - Triggers Editor / 99%
» Unity - Triggers Editor / 99%