我试图沿弧线变换路径。
我的项目在osx 10.8.2上运行,绘画是通过CALayers中的CoreAnimation完成的。
我的项目中有一个波形将由路径绘制。大约有200个样本点镜像到底部。这些被涂成每秒60次并更新为歌曲位置。
请忽略白线,它只是一个旋转指示器。
我想要实现的是沿弧线绘制波形。 “向上”应该指向中间。它不需要一路走来。波形应沿绿色圆圈绘制。请看下面提供的草图。
我不确定如何以高效的方式实现这一目标。每秒有许多点需要协调校正。
我尝试了一些自己的想法:
1)有可能为路径添加线性变换,我认为这对我没有帮助。我唯一能想到的是添加一个点,用转换旋转路径,添加另一个点,旋转等等。但我认为这会非常缓慢
2)将路径绘制成图像并弯曲它肯定会导致图像伪影。
3)也许最好的想法是预先计算弧上的采样点,然后将向量保存到中心。取波形的y坐标,将它们放在采样点上,然后沿矢量移动到中心。
但也许我只是没有看到这个问题的某种简单解决方案。非常感谢帮助,非常欢迎新鲜的想法。提前谢谢!
答案 0 :(得分:2)
恕我直言,最有效的方法(在CPU使用方面)将使用某种形式的预先计算的方法,该方法将考虑显示器的分辨率。
巧妙预先计算的值
我会进行数学转换(从线性到极地)并结合两个事实:
我没有现成的算法,但您可以使用预先计算的sin或cos表,并将数据范围与显示大小匹配,以便使用整数。
例如,假设我们有一些范围从0到1E6的数据,我们需要在100像素高度矩形中显示每个点的sin值。我们可以使用预先计算的sin表并使用整数。这样显示点的sin值会快得多。可以改进这个概念以获得更好的结果。 此外,有一些方法可以仅保留曲线的重要点,以使显示的曲线看起来像原始曲线(请参阅维基百科上的 Ramer-Douglas-Peucker算法)。但我发现快速显示不断变化的数据效率很低。
使用多核渲染