2016-06-15 58 views
2

我要計算的area一個對象,它是像rectangle任何封閉的對象,squarepolygon查找區域封閉的對象內部的IOS

enter image description here

內我不能得到精確解做到這一點請幫助找到它。

謝謝。

+0

http://stackoverflow.com/questions/ 14220719/IOS-如何到計算用戶號碼的像素區域封閉逐一個曲線 –

回答

2

我使用這個方法,這將給我關閉對象的area.It可能對你有幫助。

-(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

2

與已知頂點的任意多邊形的座標,您可以使用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