计算UIBezierPath自定义形状的面积大小

时间:2017-01-18 22:56:23

标签: ios objective-c math geometry

我有这样的UIBezierPathes:

Shapes

我想计算这种自定义形状的面积大小。我不知道在Objective c中管理这个复杂形状的计算。我在这里找到了适合Android的东西,但没有找到类似于iOS的东西:Click

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

谢谢!

1 个答案:

答案 0 :(得分:0)

如果区域被贝塞尔曲线(包括直线)包围,那么您可以利用参数曲线的格林定理(formula 10 here)来查找区域的区域。只需计算每个轮廓曲线的积分值:

 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)

我们必须扩展括号,区分第二行表达式,乘以表达式,并整合结果。结果公式相当大,但易于实现。 Maple工作来推导公式:

enter image description here