我正在使用 Qwt 在 Qt 中创建散点图。用户可以选择将几个点集附加到散点图中。但是性能是个问题。如果总点数超过 10 000 则事情会变慢。
因此,我正在寻找 C/C++ 中的算法实现,或者是一种相对简单的 2D LOD 算法,它计算原始总点集的子集并显示它。
有什么建议么?
没有回答您的问题,但我建议在 Windows 上使用 Qwt 6.0 时使用 Qwt 6.1 - 或至少启用 QwtPlotCurve::CacheSymbols。
Qwt 6.1 重新引入了几个优化 fe QwtPlotCurve::FilterPoints 以避免重复绘制(点映射到同一位置)。QwtPlotCurve 会根据运行时环境自动检测符号的缓存。
还可以查看 Qwt 6.1 中的散点图示例,显示 100000 个点的曲线。这可能是使用 Qwt 实现散点图的最快方法(在 QImage 中设置多线程 RGB 值而不使用 QPainter ),但这种方法仅适用于将点显示为点。
乌韦