2016-06-15 9 views
2

Я хочу, чтобы вычислить area внутри объекта, который является любой замкнутый объект, как rectangle, square, polygon и т.д.Найти область внутри замкнутого объекта в ИОС

enter image description here

Я не могу получить точное решение, чтобы сделать это .Пожалуйста, помогите найти его.

Спасибо.

+0

http://stackoverflow.com/questions/ 14220719/КСН-хау к высчитывает-число-пикселов участку закрытого по-а-кривой –

ответ

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]; 

Всего очков = Count массива.

Примечание: массив x и y имеют одинаковый счет.

double objectArea = [self areaWithXpts:xArray withYpts:yArray totalPoints:4]; 

Или вы можете проверить этот ответ также - Area calculation in objective c

А насчет области с объектом формы кривой вы можете найти ссылки по этой ссылке - Curve shape object area reference

2

Для произвольных многоугольников с известными координатами Vertice вы можете использовать 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

Смежные вопросы