一个非常具体的问题,如果有人知道答案:在BoundingSphere1.Contains(BoundingSphere2)的上下文中,“包含”究竟是什么意思?
如果我在一个较大的球体内部有一个较小的球体,较小的球体是否“包含”较大的球体,因为它的整个体积也是较大球体的体积?会返回ContainmentType.Contains吗?
谢谢!
答案 0 :(得分:5)
从带有BoundingSphere参数的BoundingSphere.Contains method的MSDN页面:
检查当前是否 BoundingSphere包含指定的 BoundingSphere所
表示边界的范围 卷相交或包含一个 另一个。
具体做法是:
包含:表示一个边界 音量完全包含另一个。
不相交:表示没有 边界体积之间的重叠。
相交:表示 边界体积部分重叠。
如果BoundingSphere1小于BoundingSphere2,那么我认为BoundingSphere1.Contains(BoundingSphere2)
将返回 ContainmentType.Intersects 结果,而不是 ContainmentType.Contains 结果,因为它不会“完全”包含另一个。另一方面,BoundingSphere2.Contains(BoundingSphere1)
应该返回 ContainmentType.Contains ,因为它“完全包含另一个。”
编辑:我在重新审核文档后更新了我的回答。最初听起来含糊不清但现在我认为分别对于“包含”和“相交”的“完全”和“部分”的枚举细节的重点强化了我的期望。我无法测试这个,但这听起来很合理。
答案 1 :(得分:1)
据我所知,这就是我如何解释你的假设。
BoundingSphere1是一个很大的圈子。 BoundingSphere2是一个小圆圈。
让我们说BoundingSphere2完全包含在BoundingSphere1中。 据我所知,您认为BoundingSphere2“包含”BoundingSphere1。
实际上,BoundingSphere1“包含”BoundingSphere2,因为所有BoundingSphere2都在BoundingSphere1中。
你基本上试图找出一个球体是否在另一个球体内。
所以BoundingSphere1.contains(BoundingSphere2)将为true,但BoundingSphere2.contains(BoundingSphere1)将为false。