XNA中“包含”究竟是什么意思?

时间:2009-07-31 06:10:35

标签: c# xna

一个非常具体的问题,如果有人知道答案:在BoundingSphere1.Contains(BoundingSphere2)的上下文中,“包含”究竟是什么意思?

如果我在一个较大的球体内部有一个较小的球体,较小的球体是否“包含”较大的球体,因为它的整个体积也是较大球体的体积?会返回ContainmentType.Contains吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

从带有BoundingSphere参数的BoundingSphere.Contains method的MSDN页面:

  

检查当前是否   BoundingSphere包含指定的   BoundingSphere所

返回ContainmentType enumeration

  

表示边界的范围   卷相交或包含一个   另一个。

具体做法是:

  

包含:表示一个边界   音量完全包含另一个。

     

不相交:表示没有   边界体积之间的重叠。

     

相交:表示   边界体积部分重叠。

如果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。