【发布时间】:2012-12-18 13:58:54
【问题描述】:
我正在尝试沿弧线变换路径。
我的项目在 osX 10.8.2 上运行,绘画是通过 CALayers 中的 CoreAnimation 完成的。
我的项目中有一个波形,它将由路径绘制。大约有 200 个采样点镜像到底部。这些每秒绘制 60 次并更新为歌曲位置。
请忽略白线,它只是一个旋转指示器。
我想要实现的是沿着弧线绘制波形。 “上”应该指向中间。它不需要一路走来。波形应沿绿色圆圈绘制。请看下面提供的草图。
我不确定如何以高效的方式实现这一目标。每秒有很多点需要坐标校正。
我尝试提出自己的一些想法:
1) 可以向路径添加线性变换,我认为这对我没有帮助。我唯一能想到的就是添加一个点,通过变换旋转路径,添加另一个点,旋转等等。但我认为这会很慢
2) 将路径绘制成图像并弯曲它肯定会导致图像伪影。
3) 也许最好的办法是预先计算弧上的样本点,然后将向量保存到中心。取波形的 y 坐标,将它们放在样本点上,然后沿着向量移动到中心。
但也许我只是没有看到某种简单的解决方案来解决这个问题。非常感谢您的帮助,非常欢迎新的想法。提前谢谢!
【问题讨论】:
-
所以你用你的蓝色直线,把它变成一个圆圈,然后画出相对于它的波形? (想象蓝线位于绿色和灰色圆圈之间)。换句话说,您正在转换相对于绘制波形的线?是否存在永远无法超过的最大和最小峰值?
-
现在我不这样做,但我希望波形保持在绿色圆圈(我刚刚在 Photoshop 中绘制)。结果应该看起来像我绘制的深蓝色波形(也在 Photoshop 中)。波形的高度是可缩放的,所以我可以编辑它的大小。蓝线是波形的一部分,但 y 坐标。只是 0。我希望我能把事情弄清楚。
-
我知道它应该坚持绿色圆圈...我只是想知道蓝色线是否变成了一个圆圈,它是否会穿过圆形波形的中间。只是试图根据你所拥有的概念来概念化问题。
-
感谢您的耐心等待,请多多包涵。蓝线实际上是波形的一部分。它是波形的路径。该部分中没有数据,这将导致 y 坐标为 0。因此,如果您将蓝线变成一个圆圈,就不会看到任何波形,只有一个蓝色圆圈。我试图解决您的问题:D
-
好的,我明白了。再仔细看,我可以看到它是“0值”波形。我想我只是想考虑将这个“0值”映射到圆的点上是否可行,这样每个波形点都会相对于它绘制出来,但你还需要控制波形方向。 ..
标签: objective-c xcode path core-animation transformation