Количество точек в графике может достигать сотен миллионов.
Возникло несколько проблем:
1) при отрисовке всего графика или большого диапозона все точки отрисовывать не имеет смысла с точки зрения быстродействия, однако если брать равномерную выборку (например каждую т-ую точку) резкие изменения графика могут пропадать (т.е. неотрисованные точки могут крутые всплески например).
2) в режиме "Автомасштаб графика " необходимо для любого произвольного диапозона определить max и min
Понятно, что для быстродействующего решения этих проблем нужна предварительная обработка данных, но в каком виде я плохо представляю.
Буду благодарен за любую информацию по этому поводу.
--
P.S. А может я вообще не в том направлении двигаюсь?
Здравствуйте, WiseAlex, Вы писали:
WA>Количество точек в графике может достигать сотен миллионов. WA>Возникло несколько проблем: WA>1) при отрисовке всего графика или большого диапозона все точки отрисовывать не имеет смысла с точки зрения быстродействия, однако если брать равномерную выборку (например каждую т-ую точку) резкие изменения графика могут пропадать (т.е. неотрисованные точки могут крутые всплески например). WA>2) в режиме "Автомасштаб графика " необходимо для любого произвольного диапозона определить max и min
WA>Понятно, что для быстродействующего решения этих проблем нужна предварительная обработка данных, но в каком виде я плохо представляю. WA>Буду благодарен за любую информацию по этому поводу. WA>-- WA>P.S. А может я вообще не в том направлении двигаюсь?
Выводить каждую n-ю, при изменении ординаты более чем на deltaY выводить и промежуточные точки ?
Пункт 2) — не совсем понял суть проблемы.
Здравствуйте, Ulenspiegel, Вы писали:
U>Выводить каждую n-ю, при изменении ординаты более чем на deltaY выводить и промежуточные точки ?
т.е. мы все равно при каждом выводе полностью анализируем все точки из выводимого диапазона U>Пункт 2) — не совсем понял суть проблемы.
например выводим диапазон от 0 до 1 функции 5-x. При включении режима автомасштаб сетка по оси Y должна стать от 4 до 5 чтобы показать весь кусок графика максимально развернуто
здесь та же проблема — "в лоб" для нахождения min и max придется анализировать все точки из выводимого диапазона. Когда много точек времени на сканирования всех этих точек может понадобится очень много, поэтому и спрашиваю о методиках предварительной обработки данных
Здравствуйте, WiseAlex, Вы писали:
WA>Понятно, что для быстродействующего решения этих проблем нужна предварительная обработка данных, но в каком виде я плохо представляю.
Ну как, искать экстремумы. Я бы вообще хранил свдеения об экстермумомах сразу в виде графиков в масштабе 1:1, 1:2, 1:4 и т.д. и при отрисовке выбирать самый близкий достаточный масштаб. Это конечно некоторый расход памяти (в два раза ровно), но зато графики рисуются быстро.
РМ>Ну как, искать экстремумы. Я бы вообще хранил свдеения об экстермумомах сразу в виде графиков в масштабе 1:1, 1:2, 1:4 и т.д. и при отрисовке выбирать самый близкий достаточный масштаб. Это конечно некоторый расход памяти (в два раза ровно), но зато графики рисуются быстро.
Тогда ИМХО лучше хранить отдельно вектор максимумов и вектор минимумов в разных масштабах, но масштабы должны следовать пореже: 1:1 — непосредственно значения, а дальше 1:16, 1:256 и т. д. — по два вектора экстремумов. При отрисовке выбирать близжайший более мелкий масштаб. Тогда перерасход памяти только 13%.
Здравствуйте, Vinni-puh, Вы писали:
VP>Тогда ИМХО лучше хранить отдельно вектор максимумов и вектор минимумов в разных масштабах, но масштабы должны следовать пореже: 1:1 — непосредственно значения, а дальше 1:16, 1:256 и т. д. — по два вектора экстремумов. При отрисовке выбирать близжайший более мелкий масштаб. Тогда перерасход памяти только 13%.
Идея интересная и достаточно просто реализеумая. наверное по этому пути и пойду — спасибо
Здравствуйте, Vinni-puh, Вы писали:
РМ>>Ну как, искать экстремумы. Я бы вообще хранил свдеения об экстермумомах сразу в виде графиков в масштабе 1:1, 1:2, 1:4 и т.д. и при отрисовке выбирать самый близкий достаточный масштаб. Это конечно некоторый расход памяти (в два раза ровно), но зато графики рисуются быстро.
VP>Тогда ИМХО лучше хранить отдельно вектор максимумов и вектор минимумов в разных масштабах, но масштабы должны следовать пореже: 1:1 — непосредственно значения, а дальше 1:16, 1:256 и т. д. — по два вектора экстремумов. При отрисовке выбирать близжайший более мелкий масштаб. Тогда перерасход памяти только 13%.