Znajdowanie kąta za pomocą 3 punktów CGPoints
W mojej aplikacji użytkownik naciska 3 razy, a 3 punkty zostaną dotknięte przez kąt. Doskonale rysuje kąt. Próbuję obliczyć kąt przy drugim dotknięciu, ale myślę, że robię to źle (prawdopodobnie błąd matematyczny). Nie omówiłem tego jeszcze w mojej klasie rachunku różniczkowego, więc wychodzę z formuły na wikipedii.
http://en.wikipedia.org/wiki/Law_of_cosines
Oto, co próbuję:
Uwaga: pierwsze, drugie i trzecie sąCGPoints
utworzony w kranu użytkownika.
CGFloat xDistA = (second.x - third.x);
CGFloat yDistA = (second.y - third.y);
CGFloat a = sqrt((xDistA * xDistA) + (yDistA * yDistA));
CGFloat xDistB = (first.x - third.x);
CGFloat yDistB = (first.y - third.y);
CGFloat b = sqrt((xDistB * xDistB) + (yDistB * yDistB));
CGFloat xDistC = (second.x - first.x);
CGFloat yDistC = (second.y - first.y);
CGFloat c = sqrt((xDistC * xDistC) + (yDistC * yDistC));
CGFloat angle = acos(((a*a)+(b*b)-(c*c))/((2*(a)*(b))));
NSLog(@"FULL ANGLE IS: %f, ANGLE IS: %.2f",angle, angle);
Czasami daje kąt jako 1, co nie ma dla mnie sensu. Czy ktoś może wyjaśnić, dlaczego tak jest lub jak to naprawić?