c++ - 在 C++ 中将粒子可视化为边

标签 c++ opengl

我是一名新手程序员,正在学习 C++。我正在做一个计算生物学项目,我将细胞表示为粒子。我已经制作了一个 Cell 类,我在其中跟踪 x 和 y 位置、速度和加速度。

我有一个问题有两点: 1) 现在,我只跟踪细胞的质心,所以它只是点。但是,我需要为所有这些粒子制作具有相同边缘的细长粒子(细胞都相同)。我想不出一种方法来初始化将位于质心中间的固定边,并使用“简单”C++ 代码(意思是我目前的知识)。 我的粒子应该看起来像 this .

我现在的可视化有点愚蠢......我为每个时间步导出文件中点的坐标,然后我制作了一个脚本来为每个时间步生成 PNG 使用 gnuplot 并使用 ffmpegPNG 生成视频。这引出了我的实际问题。

2) 为了解决第一点,我意识到我需要一种更好的可视化方法。我研究了 OpenGL 和其他可能的方法来做到这一点,但我觉得有点迷茫。此外,我猜想,使用直接可视化方法而不必输出到文件会更快。尽管至少到目前为止,速度对我来说还不是问题。

我在 Windows 下,使用 Visual Studio 2010。

最佳答案

就表示粒子而言,看起来您可以使用一条线。一种方法是使用端点 A = (x1, y1) 和 B = (x2, y2)。那么“重心”就是中点 M = ((x1 + x2)/2, (y1 + y2)/2).

使用这种表示形式将使可视化变得非常容易。 OpenGL 直接支持在给定端点的情况下绘制线条。

关于c++ - 在 C++ 中将粒子可视化为边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14763067/

相关文章:

c++ - 指针的值(value)

c++ - 如何将 SFINAE 与 nullary 成员函数一起使用?

python - glDrawPixels 和 numpy 问题

c++ - gluLookAt 没有出现

c++ - Qt5 中的 OpenGl 实例化渲染

c++ - 为什么将 char16_t 定义为具有与 uint_least16_t 相同的大小而不是 uint16_t?

c++ - 更快地编译 Boost.Test 测试

c++ - 重载运算符 * C++

c - SDL+OpenGL 应用程序 : blank screen

performance - 替换现有 VAO 中的 VBO