我必须用 C# 在粒子系统上编写程序,并且我正在使用 Visual Studio 2010。我不能使用任何像 OpenGl 这样的库,......我只能使用 C# 中的 Graphisc 库。我试图阅读一些教程和讲座,但我仍然不知道如何实现它。
谁能帮我理解我应该如何分解我的问题?或者指导我一些有用的教程?这对我来说是新的,我有点卡住了。
我的任务:
从点发生器对一个简单的间歇泉形状的发光粒子进行编程,将粒子视为不同颜色的点,在平行投影中在黑色背景上的单个轨道上移动。
我必须用 C# 在粒子系统上编写程序,并且我正在使用 Visual Studio 2010。我不能使用任何像 OpenGl 这样的库,......我只能使用 C# 中的 Graphisc 库。我试图阅读一些教程和讲座,但我仍然不知道如何实现它。
谁能帮我理解我应该如何分解我的问题?或者指导我一些有用的教程?这对我来说是新的,我有点卡住了。
我的任务:
从点发生器对一个简单的间歇泉形状的发光粒子进行编程,将粒子视为不同颜色的点,在平行投影中在黑色背景上的单个轨道上移动。
查找,BackgroundWorker
最好RenderTargetBitmap
在 WPF 中执行此操作
伪代码
backgroundWorker()
{
while(isRunning)
{
update()
draw()
}
}
update()
{
for each all particles
{
update gravity and/or relativity to other particles
}
}
draw()
{
clear bitmap
for each all particles
{
draw your particle
}
set it to your container
}
这是基于游戏循环
虽然不是一个完整的答案,但如果这是我的任务,我将如何解决这个问题:
Particle
可以存储其当前状态(位置、速度、加速度)并且可以移动(即SetPosition
... SetVelocity
)的类World
表示 3 维空间的类并跟踪其中的所有粒子。World
它将了解物理定律,并负责在粒子当前状态下移动它们。Particle
具有相同初始起始位置但随机初始加速度向量的 s。将那些Particle
s 添加到World
. 从那时起,他们将World
自动更新他们的位置。World
图形方式表示其所有内容Particle
s。编辑:第 7 步将是“循环运行第 6 步”。noHDD 提供的循环代码是一个非常好的基础框架:不断update
的世界状态,然后draw
是结果。