¿Cómo dibujar línea dado un punto central y un ángulo en iOS?

Esto es tanto una pregunta de iOS como mi incapacidad actual para hacer geometry de coorderadas. Dado un CGPoint para actuar como un punto en el que pasará la línea y un ángulo en radianes. ¿Cómo dibujo una línea que se extiende hasta los límites de la pantalla (línea infinita)?

Estoy usando Quartz2d para hacer esto y la API para crear una línea está limitada a dos puntos como input. Entonces, ¿cómo puedo convertir un punto y ángulo a dos puntos en los límites del dispositivo iOS?

Esto comienza con trigonometría simple. Necesita calcular las coorderadas x e y del segundo punto. Con un origen de 0,0 y el tratamiento de una línea que va directamente a la derecha como 0 grados, y al ir en el sentido contrario a las agujas del reloj (en sentido antihorario para algunos de ustedes), usted hace lo siguiente:

double angle = ... // angle in radians double newX = cos(angle); double newY = sin(angle); 

Esto supone un radio de 1. Multiplica cada vez el radio deseado. Elija un número que sea más grande que la pantalla, como 480 para un iPhone o 1024 para un iPad (suponiendo que desea puntos y no píxeles).

Luego agrega el punto original para get el punto final.

Suponiendo que tiene CGPoint start , double angle y una longitud, su punto final es:

 double endX = cos(angle) * length + start.x; double endY = sin(angle) * length + start.y; CGPoint end = CGPointMake(endX, endY); 

Está bien si el punto final está fuera de la pantalla.