неправильное вращение объекта - приложение для iPhone - PullRequest
2 голосов
/ 30 сентября 2011

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

Теперь я рисую прямоугольник с этой точкой на нем.Ширина равна 100, а высота равна 10. Угол равен 0.
см. Снимок экрана
enter image description here

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

Для прямоугольника Угол равен 90.
С этой точкой прямоугольник рисуется неправильно
см. Снимок экрана
enter image description here

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

    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 - это угол, и он не является статическим, середина - это средняя точка точки1 и точки2

для получения дополнительной ссылки см. Это

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

Спасибо,

1 Ответ

2 голосов
/ 30 сентября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...