0

我想知道计算有机形状面积的可能性。我试图计算的形状看起来像这样:

想象它由CGPoints

这有什么特殊功能吗?我想也许 CoreImage 或 Quartz 或者 opengl。

4

1 回答 1

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]是逆时针顺序的线段起点。

对于更复杂的路径段,例如贝塞尔曲线,您可以将每个段细分为可以用线段近似的小部分。

于 2013-08-10T21:28:59.210 回答