Starfield屏幕保护程序

时间:2011-05-09 21:00:19

标签: c# math vector xna

对于那些不记得旧版Starfield屏幕保护程序的用户,这是YouTube视频:http://www.youtube.com/watch?v=r5AoFiVs2ME

现在,我可以在一定范围内生成随机粒子(“星星”)。我遇到的困难是找出实现上述视频中受影响的最佳方式。

问题:鉴于我有随机生成的粒子的坐标(向量)。 给他们一个方向(矢量)的最佳方式和/或方程是什么,以便它们以一种与旧屏幕保护程序中看到的非常相似的方式在屏幕上移动? < /强>

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用的基本算法:

  1. 在随机位置生成星星,具有3-D高斯分布(屏幕中间最可能,当您离屏幕越远时,可能性越小)。请注意,恒星的运动矢量由此起点确定...运动将有效地沿着原点和起始位置向外的线移动。

  2. 为每个新生成的星分配一个距离。请注意,距离与起始位置无关。

  3. 以指数级增加的速度将星形直线移动,同时减小它的距离。你必须自己调整这些参数。

  4. 无论速度如何,星星在经过屏幕边界时都会消失。

答案 1 :(得分:3)

他们似乎离开了中心。您可以尝试计算从屏幕中心点到生成的粒子位置的矢量?然后使用相同的方向移动粒子并加速粒子直到它在屏幕外。