У меня возникла проблема с получением точки на дуге. Я нарисовал дугу. И я хочу получить точку на дуге, используя радиус, начало и угол. В моем случае происхождение - 150 150. Радиус равен 50. Начальный угол равен 0, а конечный угол равен 180. Когда я пытаюсь получить точку под углом M_PI/2, она должна быть выровнена по середине дуги, но она дает неправильные значения x и y. Пожалуйста, дайте мне знать, если у меня что-то не хватает.Точка на дуге с использованием цели c
Мой код
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 4.0);
CGContextSetStrokeColorWithColor(context,
[UIColor blueColor].CGColor);
CGContextAddArc(context, 150, 150, 50, 0, M_PI, 0);
CGContextStrokePath(context);
}
-(CGPoint)getPoint:(float)angle
{
float radius = 50;
//float x = 160+radius*cos(-M_PI/2);
//float y = 160+radius*sin(-M_PI/2);
float x = 150+radius*cos(angle);
float y = 150+radius*sin(angle);
return CGPointMake(x, y);
}
Какой результат вы получите? Поскольку cos (-pi/2) = 0 и sin (-pi/2) = -1, я бы ожидал (x, y) = (150, 100). Получается ли этот ответ? Мне не нравятся все эти закодированные магические числа. Ваш метод менее общий. Я бы передал их в качестве параметров. – duffymo
То, что мне не хватает, это угол, переданный 'getPoint', и метод, который вы используете для его рисования. Кроме того, я полагаю, что вы должны вычесть «радиус» sin (угол) ', так как ось y инвертируется на iOS. – Sulthan
@duffymo, когда я передаю M_PI/2 методу getPoint, я получаю 177 и 192. Это неверно. Это вопрос – SRI