适用于opencv,居于c ,角度测量的二维平面
float angle(Point pt1, Point pt0, Point pt2)//角度计算 { double dx1 = (pt1.x - pt0.x); double dy1 = (pt1.y - pt0.y); double dx2 = (pt2.x - pt0.x); double dy2 = (pt2.y - pt0.y); double angle_line = (dx1*dx2 dy1 * dy2) / sqrt((dx1*dx1 dy1 * dy1)*(dx2*dx2 dy2 * dy2) 1e-10); double cosM; if (pt2.y > pt1.y) { cosM = 1; } else if (pt2.y <= pt1.y) { cosM = -1; } double a = acos(angle_line) * (cosM)*180 / 3.141592653; Point linefirst = Point(pt1.x - pt0.x, pt1.y - pt0.y ); Point linesecond = Point(pt2.x - pt0.x, pt2.y - pt0.y ); bool isClockwise = linefirst.x * linesecond.y - linesecond.x * linefirst.y < 0; if (isClockwise) { a = 360 - a; } return a; }