| 18 | bool collinear(P(a), P(b), P(c)) { |
| 19 | return abs(ccw(a, b, c)) < EPS; } |
| 20 | double angle(P(a), P(b), P(c)) { |
| 21 | return acos(dot(b - a, c - b) / abs(b - a) / abs(c - b)); } |
| 22 | double signed_angle(P(a), P(b), P(c)) { |
| 23 | return asin(cross(b - a, c - b) / abs(b - a) / abs(c - b)); } |
| 24 | double angle(P(p)) { return atan2(imag(p), real(p)); } |