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 方法可以在 Physics
或 Intersection
class 中(取决于您的实际上下文)作为静态方法(或命名空间中的函数,取决于您的编码约定)。
面向对象很好,但这并不意味着您创建的所有内容都应该是 class。
面向数据是一种很好的方法(CPU 友好且少cache misses)。
编辑: 一个好的编码规则是独立思考你的事情,这意味着 AABB
实现不应该依赖于 Ray
实现.
我正在编写 3D 鼠标拾取代码 space。到目前为止,我已经制作了 Ray 和 AABB classes。我需要的是 Ray-AABB 相交的函数。我知道如何编写它并使其工作,我的问题是 class 应该定义所述函数?它应该是 Ray 还是 AABB 的成员,两者都不是?面向对象方法的最佳实践是什么?
对我来说,将该函数作为 "engine" class 的成员实现是最有意义的,更像是一个过程而不是一个函数。但是我希望我的代码真正面向对象。
我会说:都不是。
- 射线:结构(成员:开始,结束)
- AABB:结构(成员:位置,大小)。
Ray-AABB intersection 方法可以在 Physics
或 Intersection
class 中(取决于您的实际上下文)作为静态方法(或命名空间中的函数,取决于您的编码约定)。
面向对象很好,但这并不意味着您创建的所有内容都应该是 class。
面向数据是一种很好的方法(CPU 友好且少cache misses)。
编辑: 一个好的编码规则是独立思考你的事情,这意味着 AABB
实现不应该依赖于 Ray
实现.