栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 根据三个点,测出角度

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 根据三个点,测出角度

适用于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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号