任意凸多边形的重心求解_第1页
任意凸多边形的重心求解_第2页
任意凸多边形的重心求解_第3页
任意凸多边形的重心求解_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模型的建立与求解一、计算凸多边形的重心对于任意凸多边形,我们以其重心为蛛网的中枢区中心,也即蜘蛛的等待猎物点,以此点出发,先发出放射丝,再织捕丝。1.计算任意凸多边形重心的理论基础1. 四边形的重心作法:连接出四边形的一条对角线,这样四边形就变成两个三角形的组合体,分别作出两个三角形的重心,并连接两个重心成一条线段AB,同样,连接出四边形的另一条对角线,四边形就变成另外两个三角形的组合体,分别作出这两个三角形的重心,并连接两个重心成一条线段CD,则线段AB,CD的交点就是四边形的重心。2.五边形的重心作法:连接出五边形的任一条对角线,将五边形分为1个三角形与一个四边形组合体,分别作出三角形的重心,和四边形的重心,并连成线段AB;连接五边形的另外一条对角形,将五边形分为另1个三角形与四边形的组合体,分别作出三角形与四边形的重心,并连接成线段CD;则AB、CD的交点就是五边形的重心。 3、用数学归纳法,对于六边形、七边形,N边形,都可以用上述方法,先连接出一条对角线,将N边形化为一个三角形与(N-1)边形,或四边形与(N-2)边形,然后分别作出重心,并连接成线段,然后再连接另外一条对象线,分别作出两个组合体的重心并连接成线段,两条线段的交点就是N边形的重心。2重心计算的算法程序实现:有了以上理论基础,我们通过C+语言编写了一个计算任意凸多边形的程序,算法思想如下,算法程序见附录一。在平面上取一点(一般取原点)得到N个三角形OPiPi+1(其中点的顺序为逆时针)分别求出这N个三角形的重心Ci和面积Ai(注意此处面积是有向面积, 就是用叉乘求面积时保留其正负号)求出A = A1+A2+.+AN(同样保留正负号的代数相加)重心C = sigma(Ai+Ci)/A;附录一:任意凸多边形重心C+算法#include #include #include using namespace std;struct pointdouble x;double y;point gravity(point *p, int n)double area = 0;point center;center.x = 0;center.y = 0;for (int i = 0; i n-1; i+)area += (pi.x*pi+1.y - pi+1.x*pi.y)/2;center.x += (pi.x*pi+1.y - pi+1.x*pi.y) * (pi.x + pi+1.x);center.y += (pi.x*pi+1.y - pi+1.x*pi.y) * (pi.y + pi+1.y);area += (pn-1.x*p0.y - p0.x*pn-1.y)/2;center.x += (pn-1.x*p0.y - p0.x*pn-1.y) * (pn-1.x + p0.x);center.y += (pn-1.x*p0.y - p0.x*pn-1.y) * (pn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论