请区分多边形重心坐标公式的中心和重心 各自有什么性质

ArcGIS中计算多边形中心点坐标
ArcGIS中计算多边形中心点坐标
& 20:45:00&阅读264&评论0&&字号:大中小&
方法一:获取polygon的中心点坐标,可使用field
calculation。
其ArcGIS Help中的英文解释为:&
Adding the x,y coordinates of the centroid of a polygon layer to a
1). Optionally, start an edit session in ArcMap. Calculating a
field is faster outside of an edit session, but you won't be able
to undo the calculation.
2). Open the attribute table of the layer of the layer you want to
3). Right-click the field heading for the X field (if there is no X
field you can add a new field by clicking the options button and
selecting the new field option).
4). Click Calculate Values.
5). Check Advanced.
6). Type the following VBA statement in the first text
Dim Output As Double&
Dim pArea As IArea&
Set pArea = [Shape]&
Output = pArea.Centroid.X
7). Type the variable Output in the text box directly under the X
field name.
8). Click OK.&
You can repeat the same process for updating a field with the Y
coordinates for the centroid point of each polygon in the
? The property X returns a field type of double. For best results,
your X field should also be a double field type.
首先打开要提取中心点坐标的多边形图层属性表,在要提取坐标的X
Field(如果没有先创建,最好是double型)中的右键单击,选择Field
Calculator,再选中Advanced,在Pre-Logic VBA Script Code中输入代码:&
获取X坐标:&
Dim Output As Double&
Dim pArea As IArea&
Set pArea = [Shape]&
Output = pArea.Centroid.X
在输出框中输入:Output&
单击OK,获取多边形X坐标
同理获取Y坐标:&
Dim Output As Double&
Dim pArea As IArea&
Set pArea = [Shape]&
Output = pArea.Centroid.Y
方法二:分别建立两Field用于计算X,Y左边,右键单击选择Calculate Geometry,在property中分别选择X
Coordinate of Centroid或者Y Coordinate of
Centroid用于计算各多边形质心的坐标点,在Coordinate System 中选择Use Coordinate system
of the data source,在下面的Units中根据需要选择各种表示形式,点击OK,完成操作。&
此方法还可以计算多边形的面积和周长。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。导读:计算机应用,多边形重心的计算方法,李玉冰,郝永杰,刘恩海,摘要:工程中的采样通常只能得到被测对象的有限个离散数据点,在计算由这些离散数据点,为了推导出通用的计算公式,首先介绍了物理学中求平面薄片重心的原理,依据该原理推导出了两种通用计算方法,并对这些方法的原理、计算机实现、计算精度进行,最后通过Matlab和VC分别编写了相应的算法,用户可以通过VC提供的界面方便的,关键词:多边形;重心;VC
2005年12月
计算机应用
ComputerApplications
Vo.l25Dec.2005
文章编号:05)12Z-0391-03
多边形重心的计算方法
李玉冰,郝永杰,刘恩海
(1.中国科学院光电技术研究所,四川成都610209;
2.中国科学院研究生院,北京100039)
摘 要:工程中的采样通常只能得到被测对象的有限个离散数据点,在计算由这些离散数据点所围多边形的重心时算法很复杂。为了推导出通用的计算公式,首先介绍了物理学中求平面薄片重心的原理。依据该原理推导出了两种通用计算方法,并对这些方法的原理、计算机实现、计算精度进行了详细地阐述。最后通过Matlab和VC分别编写了相应的算法,用户可以通过VC提供的界面方便的计算任意多边形的重心。
关键词:多边形;重心;VC;集合类中图分类号:TP301.6  文献标识码:A
红外地球敏感器整机标定系统是通过计算机作为控制载体,给出各红外探头单视场和复合视场的数字化检测结果。
其中各探头视场的光学中心(即采样半功率点所组成的多边形几何重心)是最重要的检测依据,在工程中具有重要的应用价值。但由于实际工程中只能获得探头有限个离散采样值,所以在求由这些离散采样点所组成的多边形重心时难度较大。为了推导出求多边形重心的一般公式,本文首先给出物理学中对平面薄片重心求法:当一封闭曲线所围几何图形Ψ是一均匀薄片时其重心坐标计算公式为
1.1 累加和求重心
设平面上有N个离散数据点(xi,yi)(i=1,2,…,n),其多边形重心G(x 1,y 1)为:
这是求多边形最简单直观的方法。可以直接利用离散数据点的x,y坐标就能求图形重心。但是缺陷在于没有对离散数据点所围图形做任何处理和分析,精度不够。1.2 算法一
定理1 已知三角形△A1A2A3的顶点坐标Ai(xi,yi)(i=1,2,3)。它的重心坐标为:
定理2 已知三角形△A1A2A3的顶点坐标Ai(xi,yi)(i=
但在做具体计算时可以清楚地认识到:计算的难度完全取决于图形Ψ的形状,即使是像多边形这样的简单图形,只要边数稍微增加,用积分计算的运算量就会成倍的增加。并且用公式(1)的局限性还在于必须知道图形Ψ的表达式,此外更要求图形Ψ是连续光滑曲线(至少是分段连续)。而工程中只能得到一系列的离散数据点,所以用上面的公式去计算离散数据点系所围图形重心是难以实现的。因此就必须提出一种新的能够求离散数据点系所围图形重心的计算公式。
1,2,3)。该三角形的面积为:
x3y3△A1A2A3边界构成逆时针回路时取+。
原理:将多边形划分成n个小区域,每个小区域面积为σi,重心为Gi(–xi,y–i),利用求平面薄板重心公式(1)把积分变成累加和:
1 数学计算方法介绍
  收稿日期:;修订日期:
  作者简介:李玉冰(1981-),女,四川南充人,硕士研究生,主要研究方向:检测技术、自动化装置; 郝永杰(1957-),男,辽宁人,副研究员,主要研究方向:航天测试; 刘恩海(1964-),男,四川人,研究员,主要研究方向:光电控制.
    392
计算机应用2005年
行排序。此外由于累加和计算多边形重心的算法很容易实现,所以本文只详细说明后两种算法的仿真实现。2.1 半功率点截面图形的仿真
通过在Matlab中创建一个与草帽矩阵Z所对应的中间矩阵temp,并在中间矩阵temp里对草帽矩阵Z进行类似于等高线的设置来模拟红外探头的离散半功率点。
犤X牞Y犦=meshgrid牗-4.5牶0.05牶4.5牘牷R=sqrt牗X.^2+Y.^2牘+eps牷Z=sin牗R牘./R牷temp=zeros牗size牗Z牘牘牷temp牗0.205&Z牘=1牷temp=temp.*Z牷犤a牞b犦=find牗temp牘牷
%创建草帽矩阵Z%创建中间矩阵
由前面所提出的原理和数学定理可以得出求离散数据点所围多边形的一般重心公式:以Ai(xi,yi)(i=1,2,…,n)为
顶点的任意N边形A1A2…An,将它划分成N-2个三角形(如图1)。每个三角形的重心为Gi(–xi,y–那么多边形i),面积为σi。的重心坐标G(x 2,y 2)为
temp牗Z&0.206牘=0牷%在中间矩阵temp中设置半功率点的值
%模拟等高线功能牶查找矩阵temp中值为1牗即半功率点牘的坐
标牞将半功率点的x坐标存储在向量a中牞y坐标存储在向量b中
2.2 离散数据点排序与重心
本文公式都是在多边形A1A2…An的基础上推导而出。但无论是在用Matlab仿真模拟出的离散数据点还是工程实际采样所获得的红外探头半功率点集,离散点的x,y位置坐标都是被随机保存在数据结构里,这些离散点集并不能组成N边形。所以在得到离散采样点的x,y坐标后还必须进行排序以组成多边形。
排序原理:在所有模拟采样点(xi,yi)(i=1,2,…,n)中依据
图1 多边形分割
1.3 算法二
定理3 以Ai(xi,yi)(i=1,2,…,n)为顶点的N边形A1A2…An面积为(边界A1A2…An构成逆时针回路时取(+),
顺时针回路取(-)号):
S2y 3)为[2]:
为新原点建立新坐标系
x′=xi-oxi
y′=y-oiiy
i=1,2,…,n
通过离散采样点在新坐标系里的象限和在新坐标系里的sinθ值作为排序依据。
function犤A牞x2牞y2犦=arrsort牗a牞b牘%输入参数a牞b是模拟数据x牞y坐标
%返回参数A即排序后的坐标矩阵
约定xn+1=x1,yn+1=y1
根据定理3可以得到任意n边形A1A2…An的重心G( x3,
通过arrsor.tm返回的排序矩阵A,编写Matlab重心文件
gravity.m:
function犤x牞y犦=gravity牗A牘
%函数返回参数x牞y即多边形重心
(xi+xi+1)3
xiyixi+1yixiyixi+1yixi+1yi∑
3 VC实现重心算法
VC实现重心算法的采样值来源于北京航天某所工程中一组红外探头的测试数据。在VC++SDI环境下开发多边形重心算法时主要用到以下MFC类:
CDataPoint:定义采样点的各种属性。包括采样点x,y坐标、功率值z、象限标志flag和采样点在新坐标系中的正弦值theta。
CDlg:关联对话框资源,CDlg的成员函数负责实现读取采样值和排序功能;成员变量m_RS是CRS类对象,负责访问数据库。成员变量m_PtrArray是CPtrArray类对象,负责保存采样点的各种属性。
CRS:与Access数据库联系,派生于CRecordset类。CMyView:负责显示各视场的半功率截面图形和光学中心。
约定xn+1=x1,yn+1=y1。
2 Matlab仿真
根据实际工程经验,红外探头功率采样值的三维曲线类似于Matlab中的草帽图形,所以仿真采用Matlab草帽图形代
替工程中探头的采样值。用Matlab语言进行仿真的编程难点在于模拟出红外探头的离散采样数据点和对离散数据点进
12月李玉冰等:多边形重心的计算方法    393
个合适的数据结构动态的保存采样点的各种不同类型的属性。一般工程中都是采用链表或数组存储数据。这两种数据
结构虽然都能存储不同类型的数据,但数组不支持动态增加数据,必须在定义数组时指定数组的大小。链表虽然能够动态增加数据,但是查找,访问数据不方便,每次都必须从链表头开始操作;并且还必须手动编写取数、删除数据等代码。
基于以上分析本文采用了VC++基础类库提供的集合类CPtrArray[5]作为存储采样值的数据结构。CPtrArray集合类支持void类型的指针数组。CPtrArray的成员函数类似于
图2 算法流程
CObArray的成员函数,正因为这种类似性,开发人员可以像使用CObArray成员函数那样去使用CPtrArray成员函数。表1列出了本算法中用到的几个函数,通过Add成员函数可以实现动态添加数据的功能。GetAt成员函数可以通过索引值方便的访问集合类里任意指定位置上的元素。
表1 CPtrArray成员函数介绍
对红外探头进行检测时,步进电机步长不同的选取会直接导致采样点个数的变化,所以在读取采样点时必须使用一
函数名称GetSizeGetAtAdd
GetsnumberofelementsinthisarrayReturnsthevalueatagivenindex
Addsanelementtotheendofthearray牷growsthearrayifnecessary.
函数实现intGetSize牗牘const牷void*GetAt牗intnIndex牘constintAdd牗void*newElement牘牷
  存储数据的程序片断:
m_RS.MoveFirs牗t牘牷
for牗i=1牷i&=nCountRecordAll牷i++牘
//nCountRecordAll为表的行数牞
狖for牗intj=1牷j&nCountFieldAll牷j++牘
//nCOuntFieldAll为表的列数
m_RS.GetFieldValue牗牞jstrValue牘牷/获得采样点的功率值/intz牷z=atoi牗strValue牘牷CDataPoint*pData牷pData=newCDataPoint牗i牞牞jz牞0牞0.0牘牷
/构造采样值的各种属性/
m_PtrArray.Add牗pData牘牷/动态添加采样值/狚
m_RS.MoveNext牗牘牷
    y 1=nn
求重心得到G1(9.4)。按照算法一和算法二得到重心G2(9.),如图3。从结果可以明显看出算法一和算法二重心更加接近理论值,所以精度更高。
小圆圈表示的位置是由算法一、算法二的得到的重心G2;圆圈里十字表示的位置是理论重心;圆圈外十字表示的是累加和求得的重心。从图4可以明显看出本文提出的算法能有效提高求多边形重心的精度
图4 算法精度比较结果
图3 新算法运行结果
犤1犦 左加.任意多边形匀面重心的计算方法犤J犦.数学通报牞2002牞牗10牘.犤2犦 钱季伟.多边形的重心犤J犦.长江职工大学学报牞1993牞牗3牘.犤3犦 张志勇.精通MATLAB犤M犦.北京牶北京航空航天大学出版社牞2001.犤4犦 飞思科技产品研发中心.MATLAB6.5应用接口编程犤M犦.北京牶
电子工业出版社牞2003.
犤5犦 KRUGLINSKIDJ.VisualC++技术内幕犤M犦.潘爱民牞王国印牞
译.北京牶清华大学出版社牞2001.
4 算法精度分析
为了比较本文提出的算法与普通算法在实际求多边形重心时的精度,现提取一半径为6,中心为(10,10)圆周上任意离散的20个数据进行精度比较。圆的重心即圆的中心(10,
10),这是准确无误的。若按照累加和:
欢迎转载:
推荐:    论文发表、论文指导
周一至周五
9:00&22:00
运用“割补法”确定任意多边形的重心
2010年第2期目录
&&&&&&本期共收录文章17篇
  《中学数学杂志》2009年第2期刊出了唐兴东老师的《重心与图形面积平分问题》(以下简称文[1])一文之后,在第6期又刊出了邵亚明老师的《“重心与图形面积平分问题”的商榷》(以下简称文[2])和钟拥政老师的《也谈图形平分问题与探求重心》(以下简称文[3])两篇文章,对重心与面积平分问题进行了研究与思考.文[2]、文[3]对文[1]中研究的问题,提出了自己的不同观点,做了一些新的思考.笔者研读之后,有一些想法与思考,与邵老师、钟老师商榷,与同仁交流,不当之处请批评指正. 中国论文网 /9/view-849568.htm     1 观点回顾      文[1]对利用割补法作任意多边形(包括凹多边形)重心的表述如下:确定多边形的重心,可以先将图形分割或填补成两部分,然后分别作出它们的重心,再过两重心作一直线,重心一定在这条直线上;尔后,换一种分割或填补的方法,用同样方法再作一直线,两直线的交点就是这个任意多边形的重心.   文[2]对文[1]阐述的“任意多边形(包括凹多边形)重心的做法――割补法.”提出了质疑.文[2]的观点是:文[1]中提到的利用割补法作任意多边形(包括凹多边形)的重心的方法(即利用面积平分线确定多边形重心的方法)没有理由.并以三角形为例进行了说明.   文[3]对“怎样确定平面图形的重心”提出:探求平面图形的重心,首先要探求出能将平面图形面积两等分的两条直线,这两条直线的交点就是平面图形的重心.      2 观点商榷      显然,文[2]曲解了文[1]表述的利用割补法作任意多边形(包括凹多边形)重心的方法.而文[3]对这个问题的观点有失一般性.   2.1 两条面积平分线的交点不一定是平面图形的重心   三角形的重心是它的三条中线的交点,而三角形的中线可将三角形面积平分,所以对于三角形来说,两条面积平分线的交点是其重心是成立的.但并不是所有平面图形的重心都可以这样确定,如图1是将一矩形的右上角剪去一个小矩形后所得图形,根据中心对称图形的相关性质,可得其面积平分线A1B1(如图2所示)、A2B2(如图3所示).根据全等三角形的面积相等,可知过A1B1的中点O1的分割线C1D1、过A2B2的中点O2的分割线C2D2也都能将该图形面积平分.点O1、O2在图形中的位置显然不同,若两条面积平分线的交点是平面图形的重心,则O1、O2均是图形的重心,即图1有两个重心.这与重心概念产生矛盾,因此,两条面积平分线的交点不一定是平面图形的重心.   2.2 从“数理结合”的角度分析文[1]中的“割补法”   重心也是个物理概念(一个物体的各部分都要受到重力的作用,从效果上看,我们可以认为各部分受到的重力作用集中于一点,这一点叫做物体的重心).并指出:质量均匀分布的物体(均匀物体),重心的位置只跟物体的形状有关.有规则形状的物体,它的重心就在几何重心上.例如,均匀细直棒的中心在棒的中点,均匀球体的重心在球心,均匀圆柱的重心在轴线的中点.不规则物体的重心,可以用悬挂法来确定物体的重心,但不一定在物体上.   义务教育课程标准实验教科书•浙教版和人教版《数学(八年级下册)》均分别就“重心”这一数学与物理的共同研究对象设置了课题为《简单平面图形的重心》和《重心》的课题学习,对重心分别有如下的描述:作用于物体的各部分的重力,可以看做一个大小等于各个重力总和的力作用于物体的某一点,这一点就叫做物体的重心;在一块均匀的木板上,例如四边形木板,我们可以找到一个点,如果用一个手指顶住这点,木板会保持平衡,这个平衡点就是这块木板的重心,也是这个四边形的重心.   预备知识:   1.均匀的木板指厚度均匀且质量均匀分布的木板.作用于均匀的木板各部分的重力比就等于各部分的质量比;质量均匀分布时,各部分的质量比就等于各部分的体积比;厚度均匀时,各部分的体积比就等于各部分   忽略厚度所对应平面图形的面积比.所以,作用于均匀的木板各部分的重力比等于它们所对应平面图形的面积比.   2.杠杆平衡原理:动力×动力臂=阻力×阻力臂.即F1•OA=F2•OB.(如图4、图5)   结合以上数学和物理知识,我们可以做以下的分析与思考:   将一块均匀的木板分割成两部分,两部分所受到的重力比等于它们所对应平面图形的面积比,且分别作用在两部分的重心上.在两重心连线上选择一个支点,使两重心到支点的距离之比等于两部分重力的反比(即所对应平面图形的面积的反比).根据杠杆平衡原理可知木板平衡,该支点就是这块木板的重心,也是这块木板所对应平面图形的重心.   由此可见,先将一任意平面图形分割成两部分,然后分别作出它们的重心,再过两重心作一直线,重心一定在这条直线上.换一种分割的方法,用同样方法再作一直线,重心亦在其上,此两直线的交点就是这个任意平面图形的重心.   根据力学分析可知:将一木板裁掉一部分之后,其受力情况相当于原木块在受到重力的同时,被裁掉的部分还受到一个与该部分重力方向相反,且大小相等的力.在裁掉部分的重心与原木块重心连线的延长线上选择一支点,使两重心到该支点的距离之比等于它们所受到的重力的反比(即所对应平面图形的面积的反比).根据杠杆平衡原理可知裁减后的木板平衡,该支点就是裁减后木板的重心,也是其所对应平面图形的重心.   由此可见,先将一任意平面图形填补成两部分,然后分别作出它们的重心,再过两重心作一直线,重心一定在这条直线上.换一种分割或填补的方法,用同样方法再作一直线,重心亦在其上,此两直线的交点就是这个任意平面图形的重心.   因此,文[1]中所描述的“确定平面图形重心的方法――分割法”可以探求出任意平面图形的重心.      3 运用“割补法”确定平面图形的重心      3.1 运用“割补法”确定四边形的重心   例1 已知:如图6,四边形ABCD,求作四边形ABCD的重心.   作法:1.连结AC、BD;   2.分别作出△ABC、△BCD、△CDA、△DAB的重心G1、G2、G3、G4;   3.作直线G1G3、G2G4;两直线交于点G.   所以,点G就是四边形ABCD的重心.   例2 已知:如图7,凹四边形ABCD,求作凹四边形ABCD的重心.   作法:(同上例)   说明:两例作法第2步根据“三角形的重心是它的三条中线的交点.”作出三角形两条中线,它们的交点就是三角形的重心.因作图中线条太多,图6、图7中没有呈现所有作图的线条.   由例1与例2重心的位置可见,多边形(包括凹多边形)的重心可能在图形上,也可能不在图形上.   观察图6、图7得:两条重心连线所在直线与原四边形的两条对角线位置关系很特殊,似乎有平行关系.可用下面的推理验证:[TS(][JZ][HTK]图8图9[TS)]如图8,因为点G1、G3分别是△ABC、△CDA的重心,根据三角形重心的性质,可得BG1?G1E=DG3?G3E=2?1,所以G1G3∥BD.同理,另一条重心连线与另一条对角线也平行.同样的方法,也可证明凹四边形ABCD也具有这一特点.   因此,四边形中一条对角线分得的两个三角形的重心连线平行于另一条对角线.   利用这条性质可以简化画四边形ABCD(如图9)重心的步骤.   画法:1.连结AC、BD;   2.取BC的中点E,连结AE、DE;   3.在AE、DE上分别取点G1、G2,使AG1?G1E=DG2?G2E=2?1;   4.过点G1、G2分别画BD、AC的平行线,两线交于点G.   所以,点G为四边形ABCD的重心.   3.2 运用“割补法”确定任意多边形的重心   对于一个任意n边形A1A2A3A4A5A6A7…An,探求其重心,可先确定n边形被过点A1的对角线分割成的(n-2)个三角形的重心;然后确定由两相邻三角形组成的四边形(如图10中的四边形A1A2A3A4、A1A4A5A6、……)的重心;依次类推,不断[LL]由刚确定且相邻的两个图形的重心,根据它们的面积之比,确定它们组合成的新图形的重心,直至探求出n边形的重心.其中,组合成的新图形的重心,在组合前两图形重心的连线上,且组合成的新图形的重心到组合前两图形重心的距离之比等于组合前两图形面积的反比.任意凹多边形的重心已可用这样的思路与方法确定.      参考文献   [1] 唐兴东.重心与图形面积平分问题[J].中学数学杂志.2009,(2).   [2] 邵亚明.“重心与图形面积平分问题”的商榷[J].中学数学杂志.2009,(6).   [3] 钟拥政.也谈图形平分问题与探求重心[J].中学数学杂志.2009,(6).   [4] 范良火等.义务教育课程标准实验教科书•数学(八年级下册)[M].杭州:浙江教育出版社,2005,(12).   [5] 左怀玲等.义务教育课程标准实验教科书•数学(八年级下册)[M].北京:人民教育出版社,2008,(6).      作者简介 杭秉全,江苏南京人,1974年11月出生,全国优秀教师,南京市学科教学带头人,江苏省初中青年数学教师优质课评比获一等奖;开设省市级公开课、讲座16节次;2009年以来发表论文9篇.
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。}

我要回帖

更多关于 多边形重心 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信