Iphone 检测线角度或度的ios

Iphone 检测线角度或度的ios,iphone,ios,drawing,uibezierpath,Iphone,Ios,Drawing,Uibezierpath,我是iOS的新手,我正在尝试使用uibezierPath开发一个徒手绘图应用程序。是否有方法计算或接收总线条长度,即使我画的是直线、曲线或圆。 我在touchmove方法上使用addline,但我没有任何控制点。在您的ToucheSBegind方法中,您可以使用此代码 { UITouch * touch = [touches anyObject]; CGPoint present = [touch locationInView:self]; CGPoint previous = [touch p

我是iOS的新手,我正在尝试使用
uibezierPath
开发一个徒手绘图应用程序。是否有方法计算或接收总线条长度,即使我画的是直线、曲线或圆。
我在touchmove方法上使用addline,但我没有任何控制点。

在您的
ToucheSBegind
方法中,您可以使用此代码

{
UITouch * touch = [touches anyObject];
CGPoint present = [touch locationInView:self];
CGPoint previous = [touch previousLocationInView:self];
CGFloat angle = [self getAngle:present :previous];
}

- (float) getAngle:(CGPoint)a :(CGPoint)b
{
    int x = a.x;
    int y = a.y;
    float dx = b.x - x;
    float dy = b.y - y;
    CGFloat radians = atan2(-dx,dy);        // in radians
    CGFloat degrees = radians * 180 / 3.14; // in degrees
    return angle;
}
您可以在任何方法中调用此方法,以在
ui视图中查找两个
CGPoints
之间的角度


希望这有帮助:-)

无论直线是曲线还是直线,都可以找到任意两点之间的距离。(我不知道怎么知道线的长度)。如果直线,两点之间的距离应等于直线的距离

试试这个代码

- (double)getDistance:(CGPoint)one :(CGPoint)two
{
    return sqrt((two.x - one.x)*(two.x - one.x) + (two.y - one.y)*(two.y - one.y));
}
这是许多人熟悉的常用方法,(sqrt)[(x2-x1)(x2-x1)+(y2-y1)(y2-y1)]


希望这有帮助:-)

谢谢,现在,如果我正在使用touchesbreated和touchesmove绘制一条线,我如何获得这两个点之间的线的长度?是的,这给我点之间的直线,如果这是一个圆,两个点在同一位置结束,如果是曲线,我如何获得线的长度,长方形还是圆形?@CharlesD'Monte回答得很好!这对我回答一个不同的问题有很大帮助…但有几个问题。。。“弧度”公式不太正确,返回的是“角度”而不是“度”,答案也不能解释
atan2
可以返回正弧度或负弧度这一事实。此外,最好用M_PI替换3.14,以免丢失这么多数字;