【问题标题】:How to calculate area of an organic shape?如何计算有机形状的面积?
【发布时间】:2013-08-12 12:59:09
【问题描述】:

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

想象一下它是由CGPoints绘制的

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

【问题讨论】:

  • 在什么意义上“由CGPoints绘制”?还有,你知道怎么整合吗?
  • 我的意思是每个角落都是一个点,它不是画它的只是点,我只是画了它,所以你们可以看到我在说什么样的形状,不,我不知道如何或什么是集成。
  • 哦,我查了集成是什么,我知道怎么做,在我的国家不叫它:P

标签: ios shapes area


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

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

【讨论】:

  • % 是做什么的?某种划分?
  • % 是模数,或整数除法后的余数。
  • @Arbitur:求和的一步访问points[i]points[i+1],它们是第i个线段的起点和终点。对于最后一步(i = N-1),这应该“环绕”到points[N-1]points[0]。模运算符只是获得这种“环绕”的便捷方式,因为N % N = 0。如果您查看该维基百科文章中的公式和图片,那么您可能会理解它。 - 但如果您需要更多帮助,请告诉我!
  • 所以 10 % 3 = 7 我从 bobnobles 的回答中了解到。
  • 我在网上阅读了一些例子,现在我想我明白了。 2%2=0 因为 2 只能进入 2 1 次,留下 0 浪费。 7%3=1,因为 3 只能进入 7 2 次,留下 1 浪费。
猜你喜欢
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多