比我聪明的人可以看看这个。我正在尝试实现我在 Objective-c 中找到的贝塞尔曲线算法。
输出是错误的。我想我正确地转换了代码,所以要么原件是错误的,要么没有像这样使用......如果我使用内置NSBezierPath
的曲线看起来很棒,但我不能使用内置的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)];
我的代码试图绘制贝塞尔曲线
- (void)drawBezierFrom:(NSPoint)from to:(NSPoint)to controlA:(NSPoint)a controlB:(NSPoint)b color:(NSUInteger)color
{
float qx, qy;
float q1, q2, q3, q4;
int plotx, ploty;
float t = 0.0;
while (t <= 1)
{
q1 = t*t*t*-1 + t*t*3 + t*-3 + 1;
q2 = t*t*t*3 + t*t*-6 + t*3;
q3 = t*t*t*-3 + t*t*3;
q4 = t*t*t;
qx = q1*from.x + q2*to.x * q3*a.x + q4*b.x;
qy = q1*from.y + q2*to.y * q3*a.y + q4*b.y;
plotx = round(qx);
ploty = round(qy);
[self drawPixelColor:color atX:plotx y:ploty];
t = t + 0.003;
}
}
编辑
请参阅Objective-c 中的 Bezier 曲线算法需要对完整的功能性 Bezier 曲线方法进行调整。