int comp (const point &A, const point &B) { int cnt = A.ccw(B, reference_point); if (cnt == 0) { float dist_B = reference_point.distance (B); float dist_A = reference_point.distance (A); return (dist_A < dist_B); } return (cnt > 0); }
circle(const point& p, const point& q, const point& r) { auto a = 2 * (q.x - p.x); auto b = 2 * (q.y - p.y); auto c = 2 * (r.x - p.x); auto d = 2 * (r.y - p.y); auto det = a * d - b * c; auto k1 = (q.x * q.x + q.y * q.y) - (p.x * p.x + p.y * p.y); auto k2 = (r.x * r.x + r.y * r.y) - (p.x * p.x + p.y * p.y); auto cx = (k1 * d - k2 * b) / det; auto cy = (a * k2 - c * k1) / det; center = point(cx, cy); radius = center.distance(p); }
int findNearestBludger(point p){ int res = -1; float minDist = 100000; REP(i, n){ if(obj[i].type[0] == 'B' ){ float dist = p.distance(obj[i].loc); if(dist < minDist){ res = i; minDist = dist; } } } return res; }
int in(point p){ return(c.distance(p)<r*r); }