2017-01-18 63 views
0

我UIBezierPathes这样的:计算面积UIBezierPath自定义形状的尺寸

Shapes

我要计算这样的自定义形状的面积大小。我没有任何想法来管理目标c中这些复杂形状的计算。我在这里找到了一些Android的东西,但没有发现类似的iOS的东西:Click

我不需要一个工作解决方案,只需要一个想法或一些伪代码来解决这个问题,如果有办法。

谢谢!

回答

0

如果您的地区被贝塞尔曲线包围(包括直线),那么您可以利用格林定理的参数曲线(formula 10 here)来查找区域的面积。对于三次Bezier曲线

A = Integral[t=0..1] (y(t)*x'(t)*dt) 

,通过控制点P []中定义:只是轮廓的每一个曲线计算的积分值

A = Integral[0..1](y(t)*x'(t)*dt)= 
    Integral[0..1](
      (P[0].Y*(1-t)^3+3*P[1].Y*t*(1-t)^2+3*P[2].Y*t^2*(1-t)+P[3].Y*t^3)* 
      (P[0].X*(1-t)^3+3*P[1].X*t*(1-t)^2+3*P[2].X*t^2*(1-t)+P[3].X*t^3)' * dt) 

我们必须展开支架,区分第二行表达,乘以表达式并整合结果。所得到的公式相当大,但易于实施。枫叶派生公式:

enter image description here