求救:已知一个任意边形的各个顶点坐标,如何求它的面积

zz997788 2006-02-25 06:28:42
问题与标题
我的头都想破了,诚请各位大侠,老师给予算法.
谢谢!
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yelling 2006-02-28
  • 打赏
  • 举报
回复
分割成三角形之后求出面积加起来
寻开心 2006-02-27
  • 打赏
  • 举报
回复
适用于简单多边形

哦,本质是一样的,p是原点的时候,就退化成为上面的公式
寻开心 2006-02-27
  • 打赏
  • 举报
回复
hunton不用那么麻烦啊,不需要第三行 1 1 1 那个直接这样
. |x1 y1 | |x2 y2| |xn yn|
.s1 = | | + | | + ...... + | |
. |x2 y2 | |x3 y3| |x1 y1|

面积就是fabs(s1)*0.5
HUNTON 2006-02-26
  • 打赏
  • 举报
回复
输上去就变了,S(A,B,C)是一个行列式
HUNTON 2006-02-26
  • 打赏
  • 举报
回复
定义:已知三点A(x1,y1)、B(x2,y2)、C(x3,y3)

|x1 x2 x3|
则S(A,B,C) = |y1 y2 y3| = (x1-x3)*(y2-y3) - (y1-y3)*(x2-x3)
|1 1 1 |
解决:
在平面上任意取一点P(取原点最好),多边形为A1A2A3、、、An(顺时针或逆时针都可以),
的面积S = abs(S(A1,A2,P) + S(A2,A3,P) + 、、、+S(An-1,An,P) + S(An,A1,P)) / 2
f_acme 2006-02-26
  • 打赏
  • 举报
回复
typedef struct{
double x;
double y;
}Point;
double det(Point a,Point b,Point c)//叉积
{
return (a.x*b.y+b.x*c.y+c.x*a.y-a.y*b.x-b.y*c.x-c.y*a.x);
}
double Sarea(int n,Point p[])//计算由n个顶点构成的任意多边形的面积
{
double s=0.0;
int i;
for(i=1;i<n-1;i++)
s+=det(p[0],p[i],p[i+1]);
s/=2.0;
s=fabs(s);
return s;
}

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧