неправильное вращение объекта - приложение для iPhone

Я столкнулся с типичной проблемой при повороте объекта. Описание приведено ниже. Я взял два CGPoint, скажем, point1 и point2
point1 = (50,50)
point2 = (150, 50)
эта точка будет рисовать горизонтальную линию.

Теперь я рисую прямоугольник с этой точкой. Ширина 100 и высота 10. Угол равен 0.
см. Снимок экрана
введите описание изображения здесь

работает нормально,
теперь я меняю точку, скажем,
point1 = (50,50)
point2 = (50,150)
эта точка будет рисовать вертикальную линию.

Для прямоугольника Угол равен 90.
В этой точке прямоугольник отображается неправильно
см. Снимок экрана
  введите описание изображения здесь

Мой код для рисования прямоугольника:

    CGPoint mid = CGPointMake((point1.x+point2.x)/2, (point1.y+point2.y)/2)
    CGPoint UL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) ,  mid.y + ( Height / 2 ) * cos (A)  + ( Width / 2 ) * sin (A));
    CGContextMoveToPoint(context, UL.x,routeView.frame.size.height - UL.y);
    CGPoint UR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) ,  mid.y + ( Height / 2 ) * cos (A)  - ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, UR.x,routeView.frame.size.height - UR.y);
    CGPoint BR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) ,  mid.y - ( Height / 2 ) * cos (A)  - ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, BR.x,routeView.frame.size.height - BR.y);
    CGPoint BL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) ,  mid.y - ( Height / 2 ) * cos (A)  + ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, BL.x,routeView.frame.size.height - BL.y);
    CGContextAddLineToPoint(context, UL.x,routeView.frame.size.height - UL.y);

    CGContextStrokePath(context);

Здесь A - это угол, и он не статичен, середина - это средняя точка point1 и point2.

для получения дополнительной информации см. это

Я что-то упускаю? Пожалуйста, помогите мне, если у вас есть идеи .......

Спасибо,


person Ankur    schedule 30.09.2011    source источник
comment
а - это угол, который: 0 в первом случае и 90 во втором   -  person Jane    schedule 30.09.2011


Ответы (1)


Дай угадаю, на самом деле он повернут на 26 градусов слишком далеко, верно?

(90 x 180) / Pi ~ = 5156,62 = (360 x 14) + 90 + 26,62

Вы по ошибке повернули его на 90 радиан.

person David Schwartz    schedule 30.09.2011