如何在iOS中将度转换为极坐标

如何在iOS中将度转换为极坐标,ios,objective-c,Ios,Objective C,我在标签上画了一个圆。我为圆设置开始度和结束度。现在我想把imageview添加到这个圆标签上,使imageview的极坐标和圆环的结束度相匹配。所以,我想把圆的端点度转换成极坐标。例如: 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(po

我在标签上画了一个圆。我为圆设置开始度和结束度。现在我想把imageview添加到这个圆标签上,使imageview的极坐标和圆环的结束度相匹配。所以,我想把圆的端点度转换成极坐标。例如:

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];
我不知道如何将圆环的端点度(150度)转换为pointImgView的极坐标


请给我一些建议。非常感谢

请定义如下宏:

#define DEGREES_RADIANS(angle) ((angle) / 180.0 * M_PI)
并更改您的方法,如:

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

只需定义一个宏,如:

#define DEGREES_RADIANS(angle) ((angle) / 180.0 * M_PI)
并更改您的方法,如:

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

使用以下公式

radian = degree*M_PI/180

其中角度为
,输出为
弧度
。您可以为此定义函数或宏。

使用以下公式

radian = degree*M_PI/180
其中角度为
,输出为
弧度
。您可以为此定义函数或宏。

使用这些宏

#define kDCControlDegreesToRadians(x) (M_PI * (x) / 180.0)
#define kDCControlRadiansToDegrees(x) ((x) * 180.0 / M_PI)
代码标准注释:如果您在整个应用程序中使用此计算,请使用此宏。如果您在一个地方使用它,最好使用此逻辑在viewcontroller中编写一个方法

更新:

我的建议是:不要使用图像视图,而是使用图像My
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);
}
这里的
最小值=10.0
最大值=11.0
,您的值必须介于(10-11)之间。即将值转换为0.0到1.0,然后将其添加到10.0。 注意:我给出了我的代码,根据您的场景进行编辑

使用这些宏

#define kDCControlDegreesToRadians(x) (M_PI * (x) / 180.0)
#define kDCControlRadiansToDegrees(x) ((x) * 180.0 / M_PI)
代码标准注释:如果您在整个应用程序中使用此计算,请使用此宏。如果您在一个地方使用它,最好使用此逻辑在viewcontroller中编写一个方法

更新:

我的建议是:不要使用图像视图,而是使用图像My
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);
}
这里的
最小值=10.0
最大值=11.0
,您的值必须介于(10-11)之间。即将值转换为0.0到1.0,然后将其添加到10.0。
注意:我给出了我的代码,根据您的场景进行编辑

使用以下方法进行转换

#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);
}
#包括//mu PI
浮动弧度度数(浮动弧度)
{
返回((弧度/M_π)*180.0f);
}
浮动度弧度(浮动度)
{
返回((度/180.0f)*M_-PI);
}

使用以下方法进行转换

#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);
}
#包括//mu PI
浮动弧度度数(浮动弧度)
{
返回((弧度/M_π)*180.0f);
}
浮动度弧度(浮动度)
{
返回((度/180.0f)*M_-PI);
}


我相信您是在寻找极坐标,而不是弧度,并相应地编辑了您的问题。@cincodenada:是的,谢谢。我需要转换成极坐标。非常感谢你在寻找什么数学帮助你?我相信你在寻找极坐标,而不是弧度,并相应地编辑了你的问题。@cincodenada:是的,谢谢。我需要转换成极坐标。非常感谢。你找了什么数学来帮你?@谢谢。但我编辑了我的问题,我想把度转换成极坐标。请帮帮我。thanks@thanks. 但我编辑了我的问题,我想把度转换成极坐标。请帮帮我。谢谢谢谢,但我想把度转换成极坐标。请更新您的答案。多谢你的代码会转换成极坐标吗?我看到它转换成弧度。是吗?不,不会的。我根据你的问题给出解决办法。如果您愿意,可以试试。我想在此处绘制图像:。我想在终点进度添加点绿色。我使用了KAProgressLabel库。是否要添加滑块并拖动此滑块以更改圆?谢谢,但我确实要将度转换为极坐标。请更新您的答案。多谢你的代码会转换成极坐标吗?我看到它转换成弧度。是吗?不,不会的。我根据你的问题给出解决办法。如果您愿意,可以试试。我想在此处绘制图像:。我想在终点进度添加点绿色。我使用了KAProgressLabel库。是否要添加滑块并拖动此滑块以更改圆?