首页 > 其他 > 详细

平行线判断函数+求平行线之间的距离

时间:2015-03-25 15:28:29      阅读:306      评论:0      收藏:0      [点我收藏+]
// 得到直线的tan斜率
double GetTanOfLine( LINE line )
{
	double x_dis = line.pt0.x - line.pt1.x;
	if ( x_dis == 0.0 ) return 10e9;
	return (line.pt0.y - line.pt1.y) / x_dis;
}


// 得到两条平行线之间的距离
double GetDisOfParallelLines( LINE line0, LINE line1 )
{
	CvPoint midPoint = cvPoint( (line0.pt0.x + line0.pt1.x)/2, (line0.pt0.y + line0.pt1.y)/2 ); // 中点
	double x_dis = line1.pt0.x - line1.pt1.x;
	if ( x_dis == 0.0 ) return fabs((double)(midPoint.x - line0.pt0.x)); // 如果line1 垂直x轴

	double a = (line1.pt0.y - line1.pt1.y) / x_dis;
	double b = line1.pt0.y - (line1.pt0.x * a);
	return fabs(a * midPoint.x - midPoint.y + b) / sqrt(a * a + 1);
}


// 判断两直线是否平行
bool IsParallelLines( LINE line0, LINE line1 )
{
#define LIMIT (1.1547 / 3) //近似平行线的斜率之差的范围

	double angleTan0 = GetTanOfLine( line0 );
	double angleTan1 = GetTanOfLine( line1 );
	if ( fabs(angleTan0 - angleTan1) < (double)LIMIT )
	{
		return 1;
	}
	return 0;
}

平行线判断函数+求平行线之间的距离

原文:http://blog.csdn.net/u011504498/article/details/44621047

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!