Что именно означает «Содержит» в XNA? - PullRequest
1 голос
/ 31 июля 2009

Довольно конкретный вопрос, если кто-нибудь знает ответ: что именно означает «содержит» в контексте BoundingSphere1.Contains (BoundingSphere2)?

Если у меня внутри меньшего шара сфера, содержит ли меньшая сфера большую сферу, так как во всей своей полноте она также является объемом большей сферы? Будет ли это возвращать ContainmentType.Contains?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 31 июля 2009

На странице MSDN для BoundingSphere.Contains метод , который принимает параметр BoundingSphere:

Проверяет, текущий ли BoundingSphere содержит указанный BoundingSphere.

Возвращает Перечисление ContainmentType , которое

Указывает, до какой степени объемы пересекаются или содержат один другой.

В частности:

Содержит: Указывает, что один ограничивающий Том полностью содержит другой.

Disjoint: Указывает, что нет перекрытие между ограничивающими объемами.

Пересекается: означает, что ограничивающие объемы частично перекрываются.

Если BoundingSphere1 меньше, чем BoundingSphere2, то я полагаю, что BoundingSphere1.Contains(BoundingSphere2) вернет ContainmentType.Intersects результат вместо ContainmentType.Contains , поскольку он не "полностью" содержит другой. С другой стороны, BoundingSphere2.Contains(BoundingSphere1) должен возвращать ContainmentType. Содержит , поскольку он "полностью содержит другое".

РЕДАКТИРОВАТЬ: Я обновил свой ответ после повторного просмотра документации. Сначала что-то звучало расплывчато, но теперь я думаю, что акцент в деталях перечисления «полностью» и «частично» для Contains и Intersects, соответственно, укрепляет мои ожидания. Я не могу проверить это, но это звучит разумно.

1 голос
/ 31 июля 2009

Насколько я могу судить, я так интерпретирую ваши предположения.

BoundingSphere1 - это большой круг. BoundingSphere2 - это маленький круг.

Допустим, BoundingSphere2 полностью содержится в BoundingSphere1. Из того, что я понимаю, вы думаете, что BoundingSphere2 "содержит" BoundingSphere1.

На самом деле BoundingSphere1 "содержит" BoundingSphere2, потому что вся BoundingSphere2 находится в BoundingSphere1.

Вы пытаетесь выяснить, находится ли Сфера внутри другой Сферы.

поэтому BoundingSphere1.contains (BoundingSphere2) будет иметь значение true, но BoundingSphere2.contains (BoundingSphere1) будет иметь значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...