快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

判断点在凸四边形内

#include 
#include 

struct pt
{
	float x,y;
};

struct quat
{
	pt points[4];
};

float crossmulti2d( float x1, float y1, float x2, float y2)
{
	return x1 * y2 - x2 * y1;
}

bool inquat( quat _q, pt _pt)
{
	pt vec1, vec2;
	vec1.x = _q.points[1].x - _q.points[0].x;
	vec1.y = _q.points[1].y - _q.points[0].y;
	vec2.x = _pt.x - _q.points[0].x;
	vec2.y = _pt.y - _q.points[0].y;
	if( crossmulti2d( vec2.x, vec2.y, vec1.x, vec1.y ) < 0 )
	{
		return false;
	}
	vec1.x = _q.points[2].x - _q.points[1].x;
	vec1.y = _q.points[2].y - _q.points[1].y;
	vec2.x = _pt.x - _q.points[1].x;
	vec2.y = _pt.y - _q.points[1].y;
	if( crossmulti2d(vec2.x, vec2.y, vec1.x, vec1.y) < 0 )
	{
		return false;
	}
	vec1.x = _q.points[3].x - _q.points[2].x;
	vec1.y = _q.points[3].y - _q.points[2].y;
	vec2.x = _pt.x - _q.points[2].x;
	vec2.y = _pt.y - _q.points[2].y;
	if( crossmulti2d(vec2.x, vec2.y, vec1.x, vec1.y) < 0 )
	{
		return false;
	}
	vec1.x = _q.points[0].x - _q.points[3].x;
	vec1.y = _q.points[0].y - _q.points[3].y;
	vec2.x = _pt.x - _q.points[3].x;
	vec2.y = _pt.y - _q.points[3].y;
	if( crossmulti2d(vec2.x, vec2.y, vec1.x, vec1.y ) < 0 )
	{
		return false;
	}
	return true;
}

int main()
{
	quat shape = {
		{ {1, 1},{2, 1}, {1, 0},{0, 0} }
	};

	pt tests[] = {
		{0.0, 1.0},
		{1.0, 0.5},
		{1.5, 0},
		{1.5, 0.5},
		{1.5, 0.52},
		{1.5, 0.49}
		};
	for(int i =0; i            
            
                        
当前文章:判断点在凸四边形内
URL链接:http://6mz.cn/article/jjddgo.html

其他资讯