在用户定义的两个点之间访问UIBezierCurve值

时间:2014-02-08 00:14:30

标签: ios objective-c ipad uibezierpath

我正在尝试创建一个可以在用户定义的点/关键帧之间显示贝塞尔曲线的iPad应用。

作为示例,keyframe1的坐标为x:0,y:0,keyframe2的坐标为x:100,Y:100。

我想在关键帧1和2之间创建/显示Bezier曲线。问题是,我不知道如何读取和保存曲线的值。

有人能指出我这样做的正确方向,我已经想出了如何用曲线创建点/坐标/关键帧和UIBezierPath。是否有方法/函数/选项从两点之间的曲线中检索值?

我正在考虑在UIBezierCurve之上创建/添加很多点以提供曲线分辨率,这意味着当我迭代点并获得它们的坐标时,我可以从UIBezierCurve检索更准确的数据。

先谢谢。

1 个答案:

答案 0 :(得分:0)

我从未见过用于从现有点创建三次或二次贝塞尔曲线的好算法。这是一个非常困难的问题,因为中间控制点不在曲线上。

还有另一种称为Catmull Rom样条的样条曲线,它可以更好地将曲线拟合到一组控制点。

您可以使用Catmull Rom样条线拍摄一系列线段并将其转换为更接近平滑曲线的线段。因此,您可以创建一个实际上是一系列短线段的UIBezierPath。

(杰出的)Erica Sadun的书“iOS 6开发者'手册”有一个配方,展示了如何使用它们。我会建议这种做法。