![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Здравствйте все!
Хочу прояснить один момент: есть массив дикого размера, каждый элемент которого — отсчет на воображаемом графике. Какие «механизмы» следует задействовать, чтобы иметь возможность отображать, скажем, 100000 точек без потери экстремумов с частотой > 30 fps? Спасибо. --------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
zhgutov, а что значит без потери екстремумов , это я так понимаю что бы экстремумы функции были отчетливо видны или как
в любом случае для вывода вам будет неплохо использовать двойную буфферизацию -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Именно так.
Двойная буферизация и так используется, но нужно, чтобы все это отображалось очень быстро при любом количестве отсчетов на экране. Такое каким-то образом реализовано, например, в CoolEdit. Интересно, как именно? Добавлено @ 12:42 Сейчас реализован механизм т.о., что рисуются только минимумы и максимумы для отчсетов, умещающихся в 1 пиксел (этакая гистограмма), но при отображении более 1 часа (16.67 точек/сек) плавность теряется. Всего прорисовывается 7 графиков одновременно. --------------------
Приполз. Увидел. Укусил. |
||||
|
|||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
отображаеться оно и так быстро, а вот строиться на буффере долго...
нужна оптимизировать построение, дабы экстремумы не терялись, попробуйте делать их более интенсивным цветом...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Экстремумы отображать другим цветом не надо. Все должно быть «монолитно». Буфер, естественно строится дольше, чем выполняется отображение, но проблема не в этом. Для построения не хватает производительности проца. Нужно при отображении каждого кадра посчитать минимум-максимум для диапазона, умещающегося в одном пикселе. Если этого не делать, то при смещении области отображения на расстояние не кратное количеству точек на пиксел, так или иначе, нужно пересчитать буфер. Программа является измерительной системой и в ней реализован алгоритм следования за последней добавленной точкой. Можно сделать буфер в виде массива поддиапазонов, но тогда будет тормозить поиск. Нужно какое-то другое свежее и интересное решение (Mentos не помогает
--------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
zhgutov, это че осцилографа типа будет
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Типа что-то вроде этого. Более точная метафора — самописец.
--------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вот это еще лучше... а зачем тебе все высчитыват за определенный момент времени дельта т поступает несколько отсчетов, среди этих нескольких и высчитываешь мах и мин потом сравниваешь их с мах и мин предыдущего периода отображения и предыдущий период сдвигаешь влево на нужное количество отсчетов и маштабируешь по вертикале что бы екстремумы не вылизли, после сдвига дорисовываешь недостающии отсчеты и переключаешь буферы -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
А потом кто-нить отключит привязку и будет курсором перетаскивать область отображения, менять диапазон...
--------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
zhgutov, а тут уже думаю как извратиться можно сделать ленту в памяти с отметками изминения макс и мин и выводить регион с ленты......
или строеть на лету но тоже хранить отметки макс и мин, искать не надо будет... вообщем извращаться можно сколько угодно, подумай, я так понял отрисовывать не долго, вот маштаб на основе макс и мин высчитывать накладно вот и храни метки изминения маштаба... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Не масштаб на основе макс и мин, а макс и мин в пределах отсчетов, умещающихся в одном пикселе.
Тогда надо менять позицию на число отсчетов, соответствующих одному пикселю. Можно попробовать... --------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
успехов
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
И все бы хорошо, но в CoolEdit явно это делается иначе. Перед отображением эта программа выполняет операцию, которая называется Building Peaks, ну или что-то вроде этого. При этом все отображается с реактивной скоростью, в любом масштабе, и памяти вроде требует немного...
--------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| zhgutov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 14.12.2004 Репутация: 1 Всего: 2 |
Получилось. Теперь все «летает».
--------------------
Приполз. Увидел. Укусил. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
zhgutov, может поделишься
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |