我有这样的UIBezierPath:
我想计算这种自定义形状的面积大小。我不知道如何在Objective c中管理这种复杂形状的计算。我在这里找到了适用于Android的东西,但没有找到适用于iOS的类似东西:Click我不需要一个工作的解决方案,只是需要一个想法或一些伪代码来解决这个问题,如果有一种方法。谢谢!
vd8tlhqk1#
如果你的区域被Bezier曲线包围(包括直线),那么你可以利用参数曲线的绿色定理(formula 10 here)来求区域的面积。只需计算轮廓的每条曲线的积分值:
A = Integral[t=0..1] (y(t)*x'(t)*dt)
对于由控制点P[]定义的三次Bezier曲线:
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的工作是推导公式:
1条答案
按热度按时间vd8tlhqk1#
如果你的区域被Bezier曲线包围(包括直线),那么你可以利用参数曲线的绿色定理(formula 10 here)来求区域的面积。只需计算轮廓的每条曲线的积分值:
对于由控制点P[]定义的三次Bezier曲线:
我们必须展开括号,对第二行表达式求微分,乘表达式,并对结果积分。得到的公式相当大,但很容易实现。Maple的工作是推导公式: