求给定三个点的夹角,其实是求$$<vec{A},vec{B}>$$两个向量之间的夹角$$alpha$$。本文采用如下公式求解。
$$cos{alpha}=frac{{A} imes{B}}{|A||B|}$$
源代码如下:
double getAngleByThreeP(double pointx[3], double pointy[3]) { double a_b_x = pointx[0] - pointx[1]; double a_b_y = pointy[0] - pointy[1]; double c_b_x = pointx[2] - pointx[1]; double c_b_y = pointy[2] - pointy[1]; double ab_mul_cb = a_b_x * c_b_x + a_b_y * c_b_y; double dist_ab = sqrt(a_b_x * a_b_x + a_b_y * a_b_y); double dist_cd = sqrt(c_b_x * c_b_x + c_b_y * c_b_y); double cosValue = ab_mul_cb / (dist_ab * dist_cd); return acos(cosValue); }