Я использую CoreGraphics для рисования округленного прямоугольника, я знаком с CG API, готовым рисовать округленный прямоугольник, но я не хочу его использовать, потому что прямоугольник не является полностью равномерным округленным прямоугольник, часть его будет закругленным прямоугольником, остальные части будут набором подключенных путей, например, верхний левый и верхний правые будут закругленными краями прямоугольника, однако нижние края представляют собой группу подключенных Безье.Расчет контрольных точек addCurveToPoint
Мой вопрос: если я хочу нарисовать всю форму как путь Безье, как мне рассчитать контрольные точки в addCurveToPoint для углов? Я знаю радиус и координаты точек (на основе радиуса тоже).
(ОБНОВЛЕНИЕ)
I have a sample code, I am trying to understand the math behind it:
UIBezierPath * rectangle = [UIBezierPath bezierPath];
[rectangle moveToPoint:CGPointMake(0, 8)];
[rectangle addCurveToPoint:CGPointMake(8.01, 0) controlPoint1:CGPointMake(0, 3.58) controlPoint2:CGPointMake(3.59, 0)];
[rectangle addLineToPoint:CGPointMake(208, 0)];
[rectangle addCurveToPoint:CGPointMake(224, 16.01) controlPoint1:CGPointMake(216.84, 0) controlPoint2:CGPointMake(224, 7.16)];
[rectangle addLineToPoint:CGPointMake(224, 175)];
[rectangle addCurveToPoint:CGPointMake(192, 207) controlPoint1:CGPointMake(224, 192.67) controlPoint2:CGPointMake(209.67, 207)];
[rectangle addLineToPoint:CGPointMake(64, 207)];
[rectangle addCurveToPoint:CGPointMake(0, 142.99) controlPoint1:CGPointMake(28.65, 207) controlPoint2:CGPointMake(0, 178.35)];
[rectangle addLineToPoint:CGPointMake(0, 8)];
[rectangle closePath];
Радиус углы 8, 16, 32 и 64 для левого верхнего угла, верхний правый, нижний правый и нижний левый
Благодаря
Спасибо, уже есть пример кода, который я хочу, но я не могу понять математику за этим: – Nader
@Nader Смотрите мое обновление выше ... 'center' - это центр дуги, то есть он смещен от угла прямоугольника по радиусу. Если вам интересно, как дуга аппроксимируется кривой безье, см. [Приближение круговой дуги с кубическим безьевым путём] (http://hansmuller-flex.blogspot.ch/2011/04/approximating-circular-arc- с-cubic.html). – Codo
Спасибо! Это действительно сработало, но мне пришлось немного его изменить :) – Nader