2013-08-10 6 views
0

Я хочу знать, как можно вычислить площадь органической формы. Форма им пытаются вычислить выглядит примерно так: Как рассчитать площадь органической формы?

Представь его нарисованный CGPoints

Есть специальная функция для этого? Я думаю, может быть, CoreImage или Quartz или, может быть, opengl.

+1

В каком смысле это «нарисовано CGPoints»? Кроме того, вы знаете, как интегрировать? –

+0

Я имею в виду, что каждый угол является точкой, он не нарисовал свои точки, я просто рисовал его, чтобы вы, ребята, могли видеть, о какой форме мне говорят, нет, я не знаю, как и что такое интеграция. – Arbitur

+0

О, я посмотрел, что такое интеграция, я знаю, как это сделать, это не называется, что в моей стране: P – Arbitur

ответ

1

Если граница путь состоит только из отрезков прямых линий и не пересекает себя, то вы можете использовать следующую формулу для вычисления площади замкнутого региона (от https://en.wikipedia.org/wiki/Polygon#Area_and_centroid):

CGPoint points[N]; 

CGFloat area = 0; 
for (int i = 0; i < N; i++) { 
    area += (points[i].x * points[(i+1) % N].y - points[(i+1) % N].x * points[i].y)/2.0; 
} 

где points[0], ... , points[N-1] являются начальными точками сегментов линии в порядке против часовой стрелки.

Для более сложных участков пути, таких как кривые Безье, вы можете подразделить каждый сегмент на мелкие детали, которые могут быть аппроксимированы сегментами линий.

+0

Что делает%? какое-то деление? – Arbitur

+0

% является модулем или остатком после целочисленного деления. – bobnoble

+0

@Arbitur: один шаг суммирования обращается к точкам [i] 'и' points [i + 1] ', которые являются начальной и конечной точкой сегмента i-й линии. Для последнего шага (i = N-1) это должно «обернуться» на «точки [N-1]» и «points [0]». Оператор modulo - это просто удобный способ получить «обертывание», потому что «N% N = 0». Если вы посмотрите на формулу и картинку в этой статье в Википедии, вы, вероятно, поймете ее. - Но, пожалуйста, дайте мне знать, если вам нужна дополнительная помощь! –

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