【发布时间】:2016-10-16 07:14:50
【问题描述】:
【问题讨论】:
【问题讨论】:
对于具有已知顶点坐标的任意多边形,您可以使用Shoelace formula
A = 1/2 * Abs(Sum{i=0..n-1} (X[i] * Y[i+1] - X[i+1] * Y[i]) )
i=n-1 在哪里取i+1=0
【讨论】:
我正在使用这种方法,它会给我封闭对象的区域。它可能对你有帮助。
-(double)areaWithXpts :(NSArray *)xpts withYpts :(NSArray *)ypts totalPoints :(int)numPoints
{
double area=0;
int j=numPoints-1;
for(int i=0 ; i < numPoints;i++)
{
area=area+([[xpts objectAtIndex:j] floatValue]+[[xpts objectAtIndex:i] floatValue])*([[ypts objectAtIndex:j] floatValue]-[[ypts objectAtIndex:i] floatValue]);
j=i;
}
double areaVal=area/2;
NSLog(@"Area is :%f",areaVal);
return areaVal;
}
用法:
X 点数组
NSArray *xArray =[NSArray arrayWithObjects:@"0", @"10", @"10", @"29",nil];
Y 点数组
NSArray *yArray =[NSArray arrayWithObjects:@"4", @"26", @"26", @"4",nil];
总点数 = 数组计数。
注意:x 数组和 y 数组的计数相同。
double objectArea = [self areaWithXpts:xArray withYpts:yArray totalPoints:4];
或者你也可以检查这个答案 - Area calculation in objective c
关于带有曲线形状对象的区域:您可以从此链接找到参考 - Curve shape object area reference
【讨论】: