Алгоритм 2D уровня детализации (LOD) для точек

Я создаю диаграмму рассеяния в Qt, используя Qwt. Пользователь может добавить к диаграмме рассеяния несколько наборов точек. Однако производительность является проблемой. Если общее количество баллов превышает, скажем, 10 000, все становится медленнее.

Поэтому я ищу реализацию алгоритма на C/C++ или, альтернативно, относительно простой алгоритм 2D LOD, который вычисляет подмножество исходного общего набора точек и вместо этого отображает его.

Какие-либо предложения?


person Andy    schedule 19.04.2013    source источник


Ответы (1)


Нет ответа на ваш вопрос, но я рекомендую использовать Qwt 6.1 или, по крайней мере, включить QwtPlotCurve::CacheSymbols при использовании Qwt 6.0 в Windows.

Qwt 6.1 повторно вводит несколько оптимизаций, например. QwtPlotCurve::FilterPoints, чтобы избежать отрисовки дубликатов (точки сопоставлены с одной и той же позицией). Кэширование символа автоматически определяется QwtPlotCurve в зависимости от среды выполнения.

Также взгляните на пример диаграммы рассеяния в Qwt 6.1, показывающий кривую из 100 000 точек. Вероятно, это самый быстрый способ реализовать диаграмму рассеяния с помощью Qwt (установка многопоточных значений RGB в QImage без использования QPainter), но этот способ работает только для отображения точек в виде точек.

Уве

person Uwe    schedule 20.04.2013