CGPathAddArc vs CGPathAddArcToPoint
-
09-06-2019 - |
Question
La bibliothèque CoreGraphics d’Apple définit deux fonctions pour décrire un arc.
- CGPathAddArc ajoute un arc basé sur un centre, un rayon et une paire d'angles.
- CGPathAddArcToPoint ajoute un arc basé sur un rayon et une paire de lignes tangentes.
Les détails sont expliqués dans la référence de l'API CGPath . Pourquoi deux fonctions? Simple commodité? Est-ce que l'un est plus efficace que l'autre? L'un est-il défini en termes de l'autre?
La solution
Le premier vous obtient une partie d’un cercle (en réalité, une approximation d’un cercle), tandis que le second expose le fait que vous créez un chemin de Bézier. Selon ce que vous dessinez, l’un ou l’autre pourrait être plus pratique. Vous pouvez vraiment considérer ces deux avantages pour CGPathAddCurveToPoint.
Autres conseils
CGContextAddArc
fait ceci:
où la ligne rouge est ce qui sera tracé, sA est startAngle
, eA est le endAngle
, r est le radius
, et x et y sont x
et y
. Si vous avez un point précédent, la fonction s'alignera de ce point au début de l'arc (à moins que vous ne soyez prudent, cette ligne ne se dirigera pas dans le même sens que l'arc).
CGContextAddArcToPoint
fonctionne comme suit:
Où P1 est le point actuel du chemin, les x1, x2, y1, y2 correspondent aux fonctions x1
, x2
, y1
, y2
et r est rayon
. L'arc commencera dans la même direction que la ligne entre le point actuel et (x1, y1)
et se terminera dans la direction entre (x1, y1)
et . (x2, y2)
. il ne sera pas aligné sur (x2, y2)
Il s’arrêtera à la fin du cercle.