Quiero construir un CGPathRef
programáticamente basado en las coordenadas del Sol en diferentes puntos del día. Cálculo de los puntos no es un problema, pero quiero hacer un CGPathRef
que sea suave y pensó que CGPathAddCurveToPoint
sería apropiado.¿Qué significan los parámetros para CGPathAddCurveToPoint?
Entiendo los parámetros path, transform, xey, pero no estoy seguro de los demás. Según la documentación de Apple, son los puntos de control, y supongo que son como los que verías en un programa de dibujo vectorial donde puedes ajustar la forma en que la curva pasa por el punto.
Mi pregunta es cómo elegir puntos que se relacionan con mis coordenadas sin saber cuáles son esas coordenadas antes de tiempo? Estoy pensando que tal vez solo restar una cantidad establecida de cada uno de los primeros puntos de control y agregar la misma cantidad a los segundos puntos de control, pero eso suena más simplificado para mí. ¿Existe un método estándar para generar puntos de control que "tengan sentido" para una curva suave?
void CGPathAddCurveToPoint (
CGMutablePathRef path,
const CGAffineTransform *m,
CGFloat cp1x,
CGFloat cp1y,
CGFloat cp2x,
CGFloat cp2y,
CGFloat x,
CGFloat y
);
Desde que encontré esta pregunta mientras toma este problema: Si está acostumbrado a software de gráficos vectoriales como Illustrator, el significado de los puntos de control es ligeramente diferente de lo que se usa en Core Graphics. Si tiene una ruta [(a1, p1, b1), (a2, p2, b2), ...] donde pi son los puntos y ai son los puntos de control conectados visualmente a ellos, la ruta equivalente en Core Graphics comenzaría con [(b1, p2, a2), ...] (después de moveToPoint para p1). Espero que esto sea útil para alguien. – mrueg