目标-c中的Bezier曲线算法

时间:2012-05-05 03:32:12

标签: objective-c bezier

比我聪明的人可以看看这个。我正在尝试实现我在objective-c中找到here的Bezier曲线算法。

输出错误。我认为我正确地转换了代码,所以原来是错误的,或者没有像这样使用...如果我使用内置的NSBezierPath曲线看起来很棒但是我不能使用内置的{ {1}}。

NSBezierPath示例

NSBezierPath

我的代码试图绘制贝塞尔曲线

NSBezierPath *bezierPath = [[NSBezierPath alloc] init];
[bezierPath setLineWidth:1.0f];
[bezierPath moveToPoint:NSMakePoint(x1, y1)];
[bezierPath curveToPoint:NSMakePoint(x4, y4) controlPoint1:NSMakePoint(x2, y2) controlPoint2:NSMakePoint(x3, y3)];

修改

有关完整的Bezier曲线功能,请参见Bezier curve algorithm in objective-c needs a tweak

2 个答案:

答案 0 :(得分:4)

我在我的xy绘图仪上使用了这个Bezier函数,发现'to'出现了一个小错误。 需要切换to.x to.yb.x b.y,以便笔从from开始,到to结束。

qx = q1*from.x + q2*a.x + q3*b.x + q4*to.x;
qy = q1*from.y + q2*a.y + q3*b.y + q4*to.y;

答案 1 :(得分:2)

在我看来,每个点都有错误的系数,并且你的一个加法成倍增加。我想你想要的是:

    qx = q1*from.x + q2*a.x + q3*to.x + q4*b.x;
    qy = q1*from.y + q2*a.y + q3*to.y + q4*b.y;