我试图沿着正弦曲线均匀地定位精灵(视觉上呈圆形,例如半径为 50)。
目前,我用于 x 和 y 的函数是:
for(int i=0; i<number_of_sprites; i++){
x = sprite_index*60
y = sin(sprite_index)*60
sprite.position = CGPointMake(x, y)
}
尽管精灵都沿 x 轴均匀分布,但彼此之间的距离并不都是等距。
这有点伪代码 - 我只是在寻找数学函数来做到这一点。
我怎么解决这个问题?
根据这个答案 https://math.stackexchange.com/questions/45089/what-is-the-length-of-a-sine-wave-from-0-to-2-pi在 math.stackexchange.com 上,计算沿正弦波的弧长的解决方案是椭圆积分很难进行解析计算。
幸运的是,您有一台计算机可以使用,它可以使用数值积分应用相同的公式来实现近似所需的曲线。
给定导数sin(x)
is cos(x)
,如果你增加你的x
变量非常慢(每步增量为dx
)然后在每一步你ds
将dx * sqrt(1 + cos(x)^2)
。不断积累ds
值,直到达到(或超过)您所需的间距,然后才绘制一个点。
See http://jsfiddle.net/alnitak/fp7aknoc/ http://jsfiddle.net/alnitak/fp7aknoc/进行演示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)