2013-06-11 5 views
2

Я новичок в iOS, я пытаюсь разработать приложение рисования рисования, используя uibezierPath. Есть ли способ вычислить или получить общую длину строки, даже если я нарисовал прямую линию , изогнутый или круг. Я использую addline для метода touchmove, и у меня нет контрольных точек.ios обнаружение угла линии или степени

ответ

8

Внутри вашего метода touchesBegan, вы можете использовать этот код

{ 
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; 
} 

Вы можете вызвать этот метод в любом методе, чтобы найти угол между двумя CGPoints в UIView.

Надеется, что это помогло :-)

+0

Спасибо, теперь, если я рисую линию с помощью touchesbegan и touchesmove Как я могу получить длину линии между этими двумя точками? – Am2710

+0

Я добавляю еще один ответ, чтобы четко указать код. –

+0

Да, это дает мне прямую линию между точками, и если ее круг, то две точки заканчиваются в одном и том же месте, как я могу получить длину линии, если ее кривая одна, прямоугольник или круг? – Am2710

0

Независимо от того, является ли изогнутой или прямой линия, вы можете найти расстояние между любыми двумя точками. (Я не знаю, как получить длину строки). Если линия прямая, расстояние между двумя точками должно быть равно расстоянию между линиями.

Попробуйте этот код,

- (double)getDistance:(CGPoint)one :(CGPoint)two 
{ 
    return sqrt((two.x - one.x)*(two.x - one.x) + (two.y - one.y)*(two.y - one.y)); 
} 

Это общий метод, многие из них знакомы с, (квадратный корень) [(x2-x1) (х2-х1) + (у2-y1) (y2-y1)].

Надеется, что это помогает :-)

Смежные вопросы