取任意四边形最长边

假设四边形如下

2-----1
|        |
|        |
3-----0

假设点集合按照0-3排序,有:Point[0]、Point[1]、Point[2]、Point[3]四个元素。

 

首先要用到的是两点坐标求距离公式:

//传入两点坐标,计算两点之间的距离
float
GetDistance(const Point A, const Point B) {
  //公式:√[(x1-x2)^2+(y1-y2)^2]
return sqrt(pow((A.x - B.x),2) + pow((A.y - B.y),2)); }

然后遍历四点,计算每个相邻点之间的距离

//--------------------------
//先取得四点坐标
point = ??;    //四边形四个角点坐标

//--------------------------
float len = 0; //最长距离
float l;           //临时距离

//--------------------------
//遍历四点,计算相邻两点距离
for(int i = 0; i < 4; i++)
{
    //取得下一个点位置
    int j = (i + 1) % 4;

    //计算出两点坐标距离
    l = GetDistance(point[i],point[j]);

    //判断是否最长距离
    if(l > len)    
    {
        //更新最长距离
        len = l;    
    }
}

//--------------------------
std::cout << "最长距离:" << len << std::endl;

 

2015年1月22日

御风

posted @ 2015-01-22 15:22  御風ゝ  阅读(215)  评论(0编辑  收藏  举报