Class Ray-AABB 交集函数的隶属度

Class membership of Ray-AABB intersection function

我正在编写 3D 鼠标拾取代码 space。到目前为止,我已经制作了 Ray 和 AABB classes。我需要的是 Ray-AABB 相交的函数。我知道如何编写它并使其工作,我的问题是 class 应该定义所述函数?它应该是 Ray 还是 AABB 的成员,两者都不是?面向对象方法的最佳实践是什么?

对我来说,将该函数作为 "engine" class 的成员实现是最有意义的,更像是一个过程而不是一个函数。但是我希望我的代码真正面向对象。

我会说:都不是

  • 射线:结构(成员:开始结束
  • AABB:结构(成员:位置大小)。

Ray-AABB intersection 方法可以在 PhysicsIntersection class 中(取决于您的实际上下文)作为静态方法(或命名空间中的函数,取决于您的编码约定)。

面向对象很好,但这并不意味着您创建的所有内容都应该是 class。

面向数据是一种很好的方法(CPU 友好且少cache misses)。

编辑: 一个好的编码规则是独立思考你的事情,这意味着 AABB 实现不应该依赖于 Ray 实现.