C# Starfield屏幕保护程序方程

C# Starfield屏幕保护程序方程,c#,math,vector,xna,C#,Math,Vector,Xna,对于那些不记得旧windows Starfield屏幕保护程序是什么样子的人,这里有一段YouTube视频: 现在,我可以在一定半径内生成随机粒子(“恒星”)。我所遇到的困难是找出实现上述链接视频中看到的受影响者的最佳方式 问:假设我有随机生成粒子的坐标(向量)给他们一个方向(向量)的最佳方式和/或方程式是什么,这样他们就可以在屏幕上以与旧屏幕保护程序中所看到的方式非常相似的方式移动? 谢谢 它们似乎远离中心。您可以尝试计算从屏幕中心点到生成粒子位置的矢量吗?然后使用相同的方向移动粒子并加速粒子

对于那些不记得旧windows Starfield屏幕保护程序是什么样子的人,这里有一段YouTube视频:

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

问:假设我有随机生成粒子的坐标(向量)给他们一个方向(向量)的最佳方式和/或方程式是什么,这样他们就可以在屏幕上以与旧屏幕保护程序中所看到的方式非常相似的方式移动?


谢谢

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

您可以使用的基本算法:

  • 以三维高斯分布在随机位置生成恒星(最有可能出现在屏幕中间,越远离屏幕,可能性越小)。请注意,恒星的运动矢量是由这个起点决定的。。。运动将有效地沿原点和起始位置形成的线向外移动

  • 为每个新生成的星星指定一个距离。请注意,距离与起始位置无关

  • 以指数增长的速度沿直线移动恒星,同时减小其距离。您必须自己调整这些参数

  • 无论速度如何,恒星在通过屏幕边界时都会消失


  • 谢谢,这有助于我更好地理解它的概念。这个答案和eykanal在它正下方的答案正是我想要的。结果是,我把它弄得太复杂了。