Ste*_*eve 10 core-animation cgpath ios
我想CGPathRef
在一天中的不同时刻基于太阳的坐标以编程方式构建.计算积分不是问题,但我想做一个CGPathRef
平滑的想法CGPathAddCurveToPoint
是合适的.
我理解路径,变换,x和y参数,但我不确定其他参数.根据Apple文档,它们是控制点,我猜它们就像你在矢量绘图程序中看到的那样,你可以调整曲线通过点的方式.
我的问题是如何在不知道这些坐标提前的情况下选择与我的坐标相关的点?我想也许只是从每个第一个控制点中减去一个设定的数量,并将相同的数量添加到第二个控制点,但这听起来过于简单.是否有一种标准方法可以生成对于平滑曲线"有意义"的控制点?
void CGPathAddCurveToPoint (
CGMutablePathRef path,
const CGAffineTransform *m,
CGFloat cp1x,
CGFloat cp1y,
CGFloat cp2x,
CGFloat cp2y,
CGFloat x,
CGFloat y
);
Run Code Online (Sandbox Code Playgroud)
额外的点是源(当前)点之外的曲线的bezier控制点和进入目标点的曲线(有关一般说明,请参阅http://en.wikipedia.org/wiki/Bézier_curve).线currentX,currentY - cp1x,cp1y是当前点的向量'out',cp2x,cp2y - x,y是最终点的向量'in'.
从p1到p2产生平滑曲线的合理方法(假设4点p0,p1,p2,p3)是(伪代码):
v = (strength of curve from 0.0 to 1.0)
cp1x = p1.x+v*(p1.x-p0.x)
cp1y = p1.y+v*(p1.y-p0.y)
cp2x = p2.x-v*(p3.x-p2.x)
cp2y = p2.y-v*(p3.y-p2.y)
Run Code Online (Sandbox Code Playgroud)
对于起点,将cp1x,cp1y设置为起始x,y,将结束点设置为cp2x,将cp2y设置为结束x,y.
注意:我已经更新了答案,以纳入ughoavgfhw的评论
归档时间: |
|
查看次数: |
5817 次 |
最近记录: |