0

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

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

4

1 回答 1

1

我会说:两者都不是

  • 射线:结构(成员:开始结束
  • AABB:结构(成员:职位规模)。

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

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

面向数据是一种非常好的方法(CPU 友好,缓存未命中率较低)。

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

于 2019-07-17T20:22:17.720 回答