我正在为3D空间中的鼠标拾取编写代码。到目前为止,我已经开设了Ray和AABB课程。我需要的是Ray-AABB相交的函数。我知道如何编写并使其工作,我的问题是哪个类应该定义所说的函数?两者都不应该是Ray或AABB的成员吗?面向对象方法的最佳实践是什么?
对我来说,将函数作为“ engine”类的成员来实现是最有意义的,更像是过程而不是函数。但是我希望我的代码真正面向对象。
答案 0 :(得分:1)
我会说:都不是。
Ray-AABB交点方法可以在Physics
或Intersection
类中(取决于您的实际上下文),因为它们是静态方法(或名称空间中的函数,取决于您的编码约定)。
面向对象很好,但这并不意味着您创建的所有内容都应该是一个类。
面向数据是一种非常好的方法(CPU友好,cache misses更少)
编辑:一个好的编码规则是独立思考您的事情,这意味着AABB
实现不应依赖于Ray
实现。