在UIBezier路径上获取CGPoint

时间:2013-12-20 02:17:35

标签: ios uibezierpath cgpoint

在我的应用程序中,我有一个MKOverlayPathView,我在两点之间画一个QuadCurve,效果很好。 这是我使用的代码:

MKMapPoint mkDepPoint = MKMapPointForCoordinate([(RoutePath *)self.overlay startCoordinate]);
MKMapPoint mkArrPoint = MKMapPointForCoordinate([(RoutePath *)self.overlay endCoordinate]);
CGPoint dePoint = [self pointForMapPoint:mkDepPoint];
CGPoint arrPoint = [self pointForMapPoint:mkArrPoint];

CGPoint s = depPoint;
CGPoint e = arrPoint;

... some awesome code ...

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:s];
[path addQuadCurveToPoint:e controlPoint:cp1];
[path closePath];

现在我想在该曲线上获得特定百分比的CGPoint。我已经尝试了很多但是我没有得到有用的东西。我一直在尝试这个,但它并没有真正起作用:

CGPoint point = 
    CGPointMake(
    [self quadBezierForPercent:percent StartPoint:s.x ControlPoint:cp1.x EndPoint:e.x],
    [self quadBezierForPercent:percent StartPoint:s.y ControlPoint:cp1.y EndPoint:e.y]
);

使用此:

-(float)quadBezierForPercent:(float)t StartPoint:(float)start ControlPoint:(float)c1 EndPoint:(float)end {

    CGFloat t_ = (1.0 - t);
    CGFloat tt_ = t_ * t_;
    CGFloat tt = t * t;

    return start * tt_
    + 2.0 *  c1 * t_ * t
    + end * tt;
}

正确方向的某些方面确实很有帮助。 非常感谢提前!

0 个答案:

没有答案