Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Заблокирован

Структура данных с моментальным доступом по формуле

09.01.2017, 17:35. Показов 1437. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Мне нужна структура данных, которая обеспечивала бы моментальный доступ к данным, не перебирая все варианты, по формуле. Что имеется ввиду собственно...
1. Есть миллиарды точек в 2D пространстве с координатами X и Y.
2. Есть какая - то хитрая база данных, хитро связанный список или что - то ещё, что собственно и нужно придумать, в общем какой то контейнер, который хранит все эти миллиарды точек из п.1.
3. Задача, не перебирая все точки в контейнере (т.к. это очень медленно), выбрать одной или хотя бы небольшим кол-вом операций, все точки, который лежат на прямой, заданной, например, как y = kx+b или любым другим способом.
То есть из этого огромного 2д массива точек нужно одним махом выбрать все точки, соответствующие какому - то условию, для простоты будет рассматривать условие только прямой линии/ луча/ отрезка.... Ну вот представьте, к примеру, квадрат размером 1000 х 1000 точек, я как бы виртуально провожу насквозь этого квадрата линию и хочу выбрать все точки, которые лежат на этой линии (или лежат рядом с ней)...

Есть ли какие - то готовые решения на этот счёт? Может какие - то хитрые NoSQL методы или ещё что?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2017, 17:35
Ответы с готовыми решениями:

Файлы с произвольным доступом данных
27 номер задачи, извините нету возможности обрезать.

Таблица Управления Доступом Баз Данных
Подскажите, как добраться до этой таблицы, где она находиться и как выглядит.

Сетевое хранилище данных с общим доступом
Приветствую всех! Хочу создать сетевое хранилище с общим доступом к его содержимому. Сейчас в наличии имеется: обычный (без USB входа)...

25
Заблокирован
10.01.2017, 18:24  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Praktolock Посмотреть сообщение
Я думаю, что вы усложнили себе задачу
Усложнил? Да вы что, это дикое упрощение, т.к.
Цитата Сообщение от Praktolock Посмотреть сообщение
Вам все-таки треугольники нужно искать
это гораздо сложнее

Цитата Сообщение от Praktolock Посмотреть сообщение
3-д движок пишете что-ли?
Свой низкоуровневый рендер движок на OpenCL типа DirectX/ OpenGL/ Vulkan и пр

У меня кажется появились идеи на счёт основной задачи в нуль посте... Сейчас проверю...

Praktolock, прикольный ник Собственно как и у меня )))))
0
 Аватар для Praktolock
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
10.01.2017, 19:00
Цитата Сообщение от stupid Посмотреть сообщение
Усложнил? Да вы что, это дикое упрощение, т.к.
Да как раз нет. Кароч, нужно сначала отсечь треугольники выходящие за пределы экрана, пометить их как невидимые(опционально отсечь повернутые к нам задами), вычислить квадратные области оставшихся треугольников в координатах экрана, и их же многоугольники полученные отсечением краями экрана. При трассировке каждого луча проверять сначала на попадание в квадрат, затем в многоугольник, и при совпадении этих условий искать пересечение с треугольником. Таким образом сильно экономятся ресурсы. А пересечение луча с треугольником ищется очень просто. Задача сволится к разложению вектора по базису решением системы линейных уравнений.

Добавлено через 34 секунды
Я писал такое как-то раз, только без оптимизаций описанных мною выше

Добавлено через 2 минуты
А то что вы пытаетесь сделать, напоминает толи воксельную графику, толи какую-то странную разновидность Z-buffer'а
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.01.2017, 20:54
Цитата Сообщение от stupid Посмотреть сообщение
Это подойдёт только для ортогональных линий, то есть ты как бы для каждого X делаешь список всех Y-ков, ну и для каждый Y-ков можешь сделать список всех X-ов, тогда да, ты сможешь легко взять ортогональную линию, посмотреть её массив и выбрать ближайшую точку. Но если речь идёт не только об ортогональных линиях, а об линиях любого направления, тогда подобные массивы нужны для всех направления и со всеми сдвигами по Х и Y, то есть это очень много....
Обращение к элементу по его значению (значение - ключ) это структура вроде разряженного массива или дерева поиска. Эти структуры плохо дружат с упорядоченностью и, следовательно, индексным обращением (с бинарным поиском) по своей природе. Но моментальный быстрый доступ они обеспечивают. Есть трудности с временем добавления/удаления. Иначе - массив, то есть очень много памяти. Всё в одной тарелке не получится. Или что-то надо изобрести.
Цитата Сообщение от stupid Посмотреть сообщение
Это подойдёт только для ортогональных линий
А это неверно. Если Вы дерево деревянное имеете ввиду. Оно быстро Вам выдаст точку M(x,y) если она у него есть. Теперь, если у Вас есть у=kx+b то вы идёте по всем парам х, y=f(x) и смотрите какие точки присутствуют собирая их в какой-то контейнер. Список например. Это быстрее последовательного перебора. Намного.
0
Заблокирован
10.01.2017, 21:10  [ТС]
Цитата Сообщение от Praktolock Посмотреть сообщение
Да как раз нет. Кароч, нужно сначала отсечь треугольники выходящие за пределы экрана, пометить их как невидимые(опционально отсечь повернутые к нам задами), вычислить квадратные области оставшихся треугольников в координатах экрана, и их же многоугольники полученные отсечением краями экрана
Это вообще не в тему, это перебор всех треугольников, отсеивание, ещё перебор и ещё и ещё.......это ерунда в общем, которая характерна для любого piplina всяких DirectX-ов...
Цитата Сообщение от Praktolock Посмотреть сообщение
При трассировке каждого луча проверять сначала на попадание в квадрат, затем в многоугольник
Это всякие kd и иерархические деревья, они ускоряют, но не на столько. Плюс с ними геморроя много.
У нас же тут тема про риал тайм с миллиардами треугольников и структурой данных с моментальным доступом.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Обращение к элементу по его значению (значение - ключ) это структура вроде разряженного массива или дерева поиска.
Ну можно ж в памяти выделять блок и считать что адрес ячейки это и есть значение. Так можно моментально получить элемент по значению, с этим проблем нет. Но! Если наши точки даже в 2д пространстве, у них есть две координаты, то есть Х и У, то есть у нас уже два разряженных дерева, то есть два массива типа [адрес памяти, он же - значение; ссылка на полезные данные]. Из одного массива я легко могу моментально взять нужное мне значение, просто взяв его по адресу, а вот из двух массивов взять элемент, который соответствует двум значениям, то есть какому - то значению по Х и какому - то по У - уже сложнее, но так же просто, для этого для каждого Х в первом массиве как бы делаешь свой массив У-ков, то есть если тебе нужно выбрать точку с координатами 100,200; ты просто моментально берёшь указатель на массив У-ков и первого массива Х-ов (на отметке 100) и оттуда уже так же моментально берёшь по У-ку. Всё просто, но только для выбора одной точки, а вот если требуется выбрать диапазон - то тут уже начинается и весь геморрой, то есть для того, что бы из 2д массива моментально выбрать хотя бы все точки, лежащие внутри окружности, расположенной где - то там ..... Нужно уже.... Я не знаю пока что, что для этого нужно делать.... Понятно, что тут должны быть хеши... Но их должно быть слишком много, для всех возможных случаев, что полнейший оверхэд по памяти.... Пока что я не знаю, как решить эту задачу....

Добавлено через 2 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
то вы идёте по всем парам х, y=f(x) и смотрите какие точки присутствуют
то есть это полный перебор всех ячеек.... чем это может быть быстрее?
Цитата Сообщение от IGPIGP Посмотреть сообщение
последовательного перебора
?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.01.2017, 21:38
Цитата Сообщение от stupid Посмотреть сообщение
то есть у нас уже два разряженных дерева,
Одно. Это елка. Наряженное дерево. А разряжённый это массив или кольт.
Цитата Сообщение от stupid Посмотреть сообщение
то есть это полный перебор всех ячеек.... чем это может быть быстрее?
по х придётся идти подряд. Это потому, что формула вроде kx+b не имеет понятия о том какие из x содержат y удовлетворяющие данному условию. Некоторые x вообще могут не содержать y-ков. Но в сбалансированном дереве Вы легко дойдёте до листа в каждом случае когда нет требуемого нода. Но вначале поста Вы спрашивали доступ по ключу - значение, а потом стали спрашивать о доступе по порядку и по диапазону значений. Это противоположные задачи всё-таки. Дерево лучше по значению работает. Что касается последовательного перебора то ещё можно выбирать иксы при inorder итерации. Это может быть быстрее чем перебирать последовательно все возможные значения.
0
 Аватар для Praktolock
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
11.01.2017, 04:16
Цитата Сообщение от stupid Посмотреть сообщение
Это вообще не в тему, это перебор всех треугольников, отсеивание, ещё перебор и ещё и ещё.......это ерунда в общем, которая характерна для любого piplina всяких DirectX-ов..
Да, это не в тему. Это о том, что , на мой взгляд, задача в принципе неверно поставлена, и я решал бы по-другому. ИМХО
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2017, 04:16

Пример программы C# с доступом к Базе данных
Кто нибудь пожалуйста!!!Может скинуть пример базы данных в С# желательно какого нибудь магазина или склада...Хотя все равно... лишь бы...

Файлы данных с произвольным доступом в Pascal
Имеются данные о наименовании товара его кол-ва на складе,цене,и количестве проданного товара. Разработать проект позволяющий осуществлять:...

Проблема с доступом к базе данных SQL
Здравствуйте.Я недавно начал изучать C#.net + SQL и недавно возникла проблема - я не мог открыть базу данных.После того как программа...

Система хранения данных с регулируемым доступом
Кто как видит архитектуру и необходимый базовый функционал? Очень интересно послушать.

Ищу софт: база данных документов с многопользовательским доступом
Здравствуйте. Нужна помощь в поиске софта. Требуется найти ПО для хранения электронных документов в виде базы данных. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru