多边形质心点计算
根据地图坐标数组得出中心位置
俗称 质点
function tqe_perc()
{
var v=[],id="",p=0,area=0,cx=0,cy=0;
var count=$("#count").val();
if(count=="")
{
alert("Enter no of sides of polygon");
$("#count").focus();
return false;
}
else if(parseFloat(count)<3)
{
alert("Enter no of sides of polygon minimum 3 sides");
$("#count").focus();
return false;
}
else
{
count=parseFloat(count);
for(i=1;i<=count;i++)
{
v[i]=[];
for(j=1;j<=2;j++)
{
id="#i"+i+j;
p=$(id).val();//alert(i+"+"+j);
v[i][j]=parseFloat(p);//alert(v[i][j]);
}
}
}
for(i=1;i<=count;i++)
{
if(i==count)
{
area+=v[i][1]*v[1][2]-v[1][1]*v[i][2];
}
else
{
area+=v[i][1]*v[i+1][2]-v[i+1][1]*v[i][2];
}
}
area=area/2;
if(area!=0)
{
for(i=1;i<=count;i++)
{
if(i==count)
{
cx+=(v[i][1]+v[1][1])*((v[i][1]*v[1][2])-(v[1][1]*v[i][2]));
cy+=(v[i][2]+v[1][2])*((v[i][1]*v[1][2])-(v[1][1]*v[i][2]));
}
else
{
cx+=(v[i][1]+v[i+1][1])*((v[i][1]*v[i+1][2])-(v[i+1][1]*v[i][2]));
cy+=(v[i][2]+v[i+1][2])*((v[i][1]*v[i+1][2])-(v[i+1][1]*v[i][2]));
}
}
cx=(1/(6*area))*cx;
cy=(1/(6*area))*cy;
}
else
{
cx=0;
cy=0
}
//alert(cx);//alert(cy);
cx=Math.round(cx*1000)/1000;
cy=Math.round(cy*1000)/1000;
$("#x").val(cx);
$("#y").val(cy);
}
//================================