【发布时间】:2013-09-17 07:50:55
【问题描述】:
我正在尝试使用 c++ 创建类似以下内容:
我有一个名为 particle 的类,它将存储每个粒子的位置和速度。此外,成员函数将使用速度数据更新粒子的位置。
我也在尝试编写一个函数来检测粒子与盒子边界之间的碰撞。为此,此函数需要访问每个粒子的位置和速度。因此,该函数需要将整个粒子数组作为参数。但是,这个函数不能作为粒子类的成员函数存在,因为那样它就无法访问所有的粒子。
问题:我在哪里包含碰撞检测功能,使其成为粒子类的可扩展部分?
我想过在我的 main.cpp 文件中编写这个函数,但我一点也不知道这是否符合 OOP 准则。理想情况下,可能还有其他函数也作用于粒子数组。
【问题讨论】:
-
无论什么“拥有”粒子都可能是放置粒子碰撞检测的地方。在这种情况下,无论谁拥有粒子列表并负责管理它们。 (并且 +1 是我长期以来在一个问题中看到的最直接的示例)。
-
可以通过什么方式扩展? “显而易见”的答案是一个静态成员函数,但它可能取决于这个
particle类的角色(主要是它是否设计为用作基类),以及您希望如何表示边界框。另请注意,许多 C++ 代码(可能是大多数)以及几乎所有 C++ 标准库的设计没有遵循 OOP 准则。 C++ 允许其他编程范式,而不仅仅是 OOP。 -
GIF 也是一个 +1!
标签: function class simulation particles