
我目前正在使用与您链接上相同的算法,对于Android设备来说仍然太慢
从上面评论中的链接:
给定r = Sqrt((x-0.5)^ 2 +(y-0.5)^ 2)a = ArcTan2(y-0.5,x-0.5)n =膨胀系数(默认= 1)组x'= r ^ n * Cos(a)+ 0.5 y'= r ^ n * Sin(a)+ 0.5
(请记住,在这个等式中,x
并且y
跨度从0到1.如果您的尺寸跨度从0到w
,更换0.5
用w/2
)
通过一点数学,我们可以看到
Cos(a)= Cos(ArcTan2(y-0.5,x-0.5)) =(x-0.5)/ rSin(a)= Sin(ArcTan2(y-0.5,x-0.5)) =(y-0.5)/ r
这使得最终的方程式
r =(x-0.5)^ 2 +(y-0.5)^ 2n =膨胀系数(默认= 0)组x'= r ^ n *(x-0.5)+ 0.5y'= r ^ n *(y-0.5)+ 0.5
(我删除了平方根,因为无论如何我们都将结果取为实数…因此,要真正使之等效,我们应该使用n/2
而不是n
,但是由于我们_定义的是
“膨胀因子”,因此我们可以省略额外的划分)_
仅需少量的乘法运算和一个实数乘积,这可能是您希望获得的最快速度。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)