任意凸多边形的重心求解.doc

任意凸多边形的重心求解.doc

ID:50952168

大小:138.00 KB

页数:4页

时间:2020-03-16

任意凸多边形的重心求解.doc_第1页
任意凸多边形的重心求解.doc_第2页
任意凸多边形的重心求解.doc_第3页
任意凸多边形的重心求解.doc_第4页
资源描述:

《任意凸多边形的重心求解.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、模型的建立与求解一、计算凸多边形的重心对于任意凸多边形,我们以其重心为蛛网的中枢区中心,也即蜘蛛的等待猎物点,以此点出发,先发出放射丝,再织捕丝。1.计算任意凸多边形重心的理论基础1.四边形的重心作法:连接出四边形的一条对角线,这样四边形就变成两个三角形的组合体,分别作出两个三角形的重心,并连接两个重心成一条线段AB,同样,连接出四边形的另一条对角线,四边形就变成另外两个三角形的组合体,分别作出这两个三角形的重心,并连接两个重心成一条线段CD,则线段AB,CD的交点就是四边形的重心。2.五边形的重心作法:连接出五边

2、形的任一条对角线,将五边形分为1个三角形与一个四边形组合体,分别作出三角形的重心,和四边形的重心,并连成线段AB;连接五边形的另外一条对角形,将五边形分为另1个三角形与四边形的组合体,分别作出三角形与四边形的重心,并连接成线段CD;则AB、CD的交点就是五边形的重心。3、用数学归纳法,对于六边形、七边形,N边形,都可以用上述方法,先连接出一条对角线,将N边形化为一个三角形与(N-1)边形,或四边形与(N-2)边形,然后分别作出重心,并连接成线段,然后再连接另外一条对象线,分别作出两个组合体的重心并连接成线段,两条线

3、段的交点就是N边形的重心。2.重心计算的算法程序实现:有了以上理论基础,我们通过C++语言编写了一个计算任意凸多边形的程序,算法思想如下,算法程序见附录一。在平面上取一点(一般取原点)得到N个三角形OP[i]P[i+1](其中点的顺序为逆时针)分别求出这N个三角形的重心Ci和面积Ai(注意此处面积是有向面积,就是用叉乘求面积时保留其正负号)求出A=A1+A2+...+AN(同样保留正负号的代数相加)重心C=sigma(Ai+Ci)/A;附录一:任意凸多边形重心C++算法#include#incl

4、ude#includeusingnamespacestd;structpoint{ doublex; doubley;};pointgravity(point*p,intn){ doublearea=0; pointcenter; center.x=0; center.y=0; for(inti=0;i

5、*p[i].y)*(p[i].x+p[i+1].x);  center.y+=(p[i].x*p[i+1].y-p[i+1].x*p[i].y)*(p[i].y+p[i+1].y); } area+=(p[n-1].x*p[0].y-p[0].x*p[n-1].y)/2; center.x+=(p[n-1].x*p[0].y-p[0].x*p[n-1].y)*(p[n-1].x+p[0].x); center.y+=(p[n-1].x*p[0].y-p[0].x*p[n-1].y)*(p[n-1].y+p[0].y

6、); center.x/=6*area; center.y/=6*area; returncenter;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。