2013-12-21 3 views
0

Я рисую круг в UILabel. Я установил начальную степень и степень окончания для круга. Теперь я хочу добавить изображение к этой метке круга, чтобы полярные координаты изображения совпадали с конечной степенью циркуль. Таким образом, я хочу преобразовать конечную степень круга в полярные координаты. Пример:Как преобразовать градус в полярные координаты в iOS

Width of UILabel = 62 
Height of UILabe = 62 
Start degree of cirle in UILabel = 0 (degree) 
End degree of cirle in UILabel = 150 (degree) 

Я добавил UIImageView (pointImgView) этой UILabel ниже

UIImageView *pointImgView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, 6, 6)]; 
[self addSubview:pointImgView]; 

Я не знаю, как преобразовать End степень cirle (150 градусов) в полярных координатах pointImgView.

Пожалуйста, дайте мне несколько советов. Большое спасибо

+1

Я считаю, что вы ищете полярные координаты, а не в радианах, и отредактированный свой вопрос соответствующим образом. – cincodenada

+0

@cincodenada: Да, спасибо. Мне нужно преобразовать в полярные координаты. Thanks much – user3114750

+0

Какие математики вы искали, чтобы помочь вам? – Wain

ответ

1

Просто определить макрос, как:

#define DEGREES_RADIANS(angle) ((angle)/180.0 * M_PI) 

И изменить способ, как:

CATransform3D transform = CATransform3DMakeRotation(DEGREES_RADIANS(360), 0, 0, 1) 
+0

@thanks. но я отредактировал мой вопрос, именно я хочу преобразовать градус в полярные координаты. пожалуйста помогите. спасибо – user3114750

0

Используйте следующую формулу

radian = degree*M_PI/180 

где ваш угол находится в degree и выход находится в radian. Вы можете определить для этого функцию или макрос.

3

Используйте эти макросы.

#define kDCControlDegreesToRadians(x) (M_PI * (x)/180.0) 
#define kDCControlRadiansToDegrees(x) ((x) * 180.0/M_PI) 

Примечания для стандартного кода: Если вы используете этот расчет в целом приложение, используйте этот макрос. Если вы используете его в одном месте, лучше напишите один метод в вашем контроллере view, используя эту логику.

Обновлено:

Мое предложение: Вместо того, чтобы использовать режим изображения, цвет заливки этикеток с изображением моей backgroundColor = [UIColor colorWithPatternImage:] и нарисуйте круг вокруг ярлыком ниже кода. Используйте нижеприведенный код, чтобы нарисовать круг с start угол.

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGRect boundsRect = self.bounds; 
    float x = boundsRect.size.width/2; 
    float y = boundsRect.size.height/2; 
    boundsRect.size.width -= 5; 
    boundsRect.size.height -= 5; 

    CGContextSaveGState(context); 
    CGContextSetLineWidth(context, self.valueArcWidth); 
    [self.trackingColor set]; 
    // Drawing code 
    CGFloat valueAdjusted = (self.value - self.minimumValue)/(self.maximumValue - self.minimumValue); 
    CGContextAddArc(context, 
        x, 
        y, 
        boundsRect.size.width/2 -2, 
        kDCControlDegreesToRadians(self.arcStartAngle , 
        kDCControlDegreesToRadians(self.arcStartAngle + (360 * valueAdjusted), 
        0); 
    CGContextStrokePath(context); 
    CGContextRestoreGState(context); 
} 

Здесь MinimumValue = 10.0 и maximum value = 11.0, и ваше значение должно быть в пределах между (10 -11). который преобразует ваше значение в 0.0 до 1.0 и добавляет его в 10.0. Примечание: я даю свой код, редактирую его в соответствии с вашим сценарием.

+0

Спасибо, но именно я хочу преобразовать градус в полярные координаты. Пожалуйста, обновите свой ответ. спасибо большое – user3114750

+0

@ user3114750: см. мой обновленный ответ .. – Mani

+0

Ваш код преобразует в полярные координаты? Я вижу, что он превращается в радиан. это правильно? – user3114750

1

Используйте следующие методы для преобразования

#include <math.h>    // M_PI 

float RadiantoDegree(float radian) 
{ 
    return ((radian/M_PI) * 180.0f); 
} 

float DegreetoRadian(float degree) 
{ 
    return ((degree/180.0f) * M_PI); 
} 
Смежные вопросы