我想知道计算有机形状面积的可能性。我试图计算的形状看起来像这样:
想象它由CGPoints
这有什么特殊功能吗?我想也许 CoreImage 或 Quartz 或者 opengl。
如果边界路径仅由直线段组成并且自身不相交,则可以使用以下公式计算封闭区域的面积(来自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]
是逆时针顺序的线段起点。
对于更复杂的路径段,例如贝塞尔曲线,您可以将每个段细分为可以用线段近似的小部分。