我正在使用核心图形在iphone上制作线图,而不是使用锯齿状图表,我想像在旧的数学课上一样平滑。选择将CGContextAddCurveToPoint的控制点放在何处的公式是什么?
CGFloat cp2x = (x + x + prevX);
CGFloat cp1y = (prevY + prevY + y);
CGFloat cp1x = (prevX + prevX + x);
CGFloat cp2y = (y + y + prevY);
CGContextAddCurveToPoint(context, cp1x, cp1y, cp2x, cp2y, x, y);
此代码几乎可以使用但不考虑3分。
答案 0 :(得分:2)
我最终做了这样的事情,效果很好:
CGPoint prevItemPosition2 = [self positionForItem: prevItem2 andMaxItem:maxItem inItems: items];
CGPoint prevItemPosition1 = [self positionForItem: prevItem1 andMaxItem:maxItem inItems: items];
CGFloat cpAngle = atan2f((prevItemPosition2.y - prevItemPosition1.y),
(prevItemPosition2.x - prevItemPosition1.x));
cpAngle += M_PI;
CGFloat magnitude = sqrtf(powf(prevItemPosition1.x - itemPosition.x, 2) +
powf(prevItemPosition1.y - itemPosition.y, 2)) / 3;
CGPoint angleComponents = CGPointMake(cos(cpAngle) * magnitude,
sin(cpAngle) * magnitude);
CGPoint cp = CGPointMake(prevItemPosition1.x + angleComponents.x,
prevItemPosition1.y + angleComponents.y);
CGContextAddQuadCurveToPoint(context, cp.x, cp.y, itemPosition.x, itemPosition.y);