判断一个点是否在扇形区域内
判断点$P$是否在以点$A$为圆心,点$B$,$C$为两个角的扇形内
重心法
1.比较$\vec {AP}$ 和$\vec {AB}$的长度,判断是否在圆内
2.
u>=0,v>=0则点$P$在$\vec {AB}$和$\vec {AC}$的夹角内
1 2 3 4 5 6 7 8 9 10
| bool IsPointInFan(lt::Vector2<float> p, lt::Vector2<float> a, lt::Vector2<float> b, lt::Vector2<float> c) { lt::Vector2<float> ap = p - a; lt::Vector2<float> ab = b - a; lt::Vector2<float> ac = c - a; if (ap.x * ap.x + ap.y * ap.y > ab.x * ab.x + ab.y * ab.y) { return false; } float u = 0, v = 0; u = (ap.x * ac.y - ac.x*ap.y) / (ab.x * ac.y - ac.x * ab.y); v = (ap.x * ab.y - ab.x*ap.y) / (ac.x * ab.y - ab.x * ac.y); return u >= 0 && v >= 0; }
|