您的位置:首页 > 其它

摘:向量叉乘_计算多边形面积_算法模板

2012-12-05 21:04 211 查看
/*
* 计算多边形面积(利用向量叉乘)
*/

struct Point { // 点结构体
int x, y;
};

// 点的叉乘: AB * AC
int cross(const Point &A, const Point &B, const Point &C) {
return (B.x - A.x) * (C.y - A.y) - (B.y - A.y) * (C.x - A.x);
}

/*
* 计算多边形面积
* 参数:n个顶点, 多边形顶点坐标集合
*/
double polygon_area(const int &n, Point p[])
{
double area = 0.0;
int i;
Point temp;

temp.x = temp.y = 0;//原点
for (i = 0; i < n-1; ++i)
{
area += cross(temp, p[i], p[i+1]);
}
area += cross(temp, p[n-1], p[0]);//首尾相连
area = area/2.0;        //注意要除以2
return area > 0 ? area : -area;    //返回非负数
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: