Просмотр сообщений
|
Страниц: 1 ... 3 4 [5] 6 7 ... 140
|
61
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 28, 2021, 11:29
|
Чего это? Та же регулярная (или нерегулярная) сетка имеет сложность O(N). Правда нужны хорошие "руки" чтобы здесь ее реализоват
Ну и как Вы это себе представляете? Оно вообще того стоит? Стоит ли создавать некие новые структуры, если речь идёт о O(N) против O(N log(N))? Вот у Вас есть result (vector<pair<point3d, point3d>>) не отсортированный ни по положениям, ни по нормалям. Как Вы хотите, имея только его, за O(N) найти все точки, удвл. условию? Да даже меньше.. Есть std::partial_sort,,
|
|
|
62
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 27, 2021, 15:58
|
Кстати kd-tree сортированный result вовсе не гарантирует
Да, согласен.. Сортировка по 2 и более ключам здесь смысла не имеет. Ну отсортировали, как бум искать?
Ну тогда никакие структуры и "кластеризация" данных Вам не поможет.. Это всегда будет за O(N log (N)).. Если только не интерполировать начальные данные какой-либо "гладкой" функцией..
|
|
|
63
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 26, 2021, 14:27
|
Ну вот, сейчас опять начнется "чего-то не понял" и.т.п. Ну как уж тут не без этого.. Псевдокод: C++ (Qt) typedef vector<pair<point3d, point3d>> data_t; /* первый point3d - положение точки, второй - вектор нормали */ data_t data; // ... kd_tree tree(data) // формируем дерево. Один раз. //... double R; // радиус point3d p; // выбираемая пользователем точка data_t result = tree.nearest_in_radius(p, R);
Здесь result отсортирован по положениям, ближайшим к p? А нужно ещё по-быстрому отсортировать его по нормалям к p? Так?
|
|
|
65
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 22, 2021, 17:06
|
Не понял вопроса. Пока критериев 2: близость по расстоянию (от точки выбросв) и направлению. Идея простейшая: если "примерно такой же" луч уже был - юзаем его, т.к. выброс и последующий шейдинг - удовольствие дорогое
Это больше риторический вопрос.. Первый критерий решается построением дерева. А вот второй - ничего не остаётся, как прямой перебор..
|
|
|
67
|
Программирование / Алгоритмы / Re: Восстановление синусоиды
|
: Март 22, 2021, 15:56
|
А это мои, так сказать, наработки)
Ну, выглядит довольно серьёзно) а планы на будущее в развитии есть? на гитхаб-гитлаб там положить, или как либу выпускать? Да что-то пока руки не доходят.. Это больше по работе.. Такое расширение boost'а.. Пишу понемногу для своих нужд
|
|
|
68
|
Программирование / Алгоритмы / Re: Восстановление синусоиды
|
: Март 22, 2021, 15:40
|
Это такая штука, которая минимум функции многих переменных находит) В данном случае размерность = 2: Amplitude и omega)
Я имею в виду, там просто в исходниках нигде ни лицензии не указано, ни авторства... поэтому и интересуюсь А это мои, так сказать, наработки)
|
|
|
70
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 22, 2021, 15:28
|
Мы, похоже, разными категориями мыслим.. Прочтите хотя бы мой предыдущий пост
Из данной точки выбрасываются 200 (по дефаулту) лучей. Напр-е каждого (нормаль) известно. Перед выбросом каждого просматриваем ближайшие точки в радиусе R. Если найдена хоть одна с близким напр-ем, то используем ее/их, луч не выбрасываем.
Что значит "луч не выбрасываем"? Как я понял имеется набор точек (x, y, z) для каждой из которых задан вектор нормали. Хорошо. Теперь Вы генерируете 200 векторов (лучей) исходящих из заданной точки. У Вас есть kd-дерево, и значит что можно найти все ближайшие точки в окрестности радиуса R. Проблема теперь сводится к тому, чтобы из всех этих точек выкинуть те, которые по критерию близости по направлению не подходят?
|
|
|
71
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 21, 2021, 14:50
|
Из данной точки выбрасываются 200 (по дефаулту) лучей. Напр-е каждого (нормаль) известно. Перед выбросом каждого просматриваем ближайшие точки в радиусе R.
Так какое условие? Есть реализация kd-дерева - выложу. Когда однозначно критерий определите, тогда и решение будет..
|
|
|
74
|
Программирование / Алгоритмы / Re: Сортировка и поиск по вектору нормали
|
: Март 20, 2021, 17:30
|
В смысле "глобальных"? Так их не удается "срастить". Первое найдет 100, второе 1000, искать "пересечения" пол-дня.
Я имею в виду, что коль скоро определён критерий близости точек, то зная радиус R, можно за порядка log(N) найти все точки, лежайшие внутри этого радиуса.. А у же потом отсеять все лишние.. Т.е. kd-дерево строится по принципу ближайших к заданной точки. Дело, конечно, не однозначное.. Ну можно среднее взять и с ним сравнивать.. Ну или.. Постановка проблемы не однозначна просто.. И да, тот чувак не из Ярославля, а с Ростова-на-Дону Кстати, красивый город)
|
|
|
|
|