Android Game Programming by Example книга Джона Нортона - не пойму вычисление границы
В книге Джона Нортона "Android Game Programming by Example" на 120 стр. автор проверяет попадает ли объект на экран или не попадает. Для это пишет метод
public boolean clipObjects(float objectX, float objectY, float objectWidth, float objectHeight) {
boolean clipped = true;
if (objectX - objectWidth <
currentViewportWorldCentre.x + (metresToShowX / 2)) {
if (objectX + objectWidth >
currentViewportWorldCentre.x - (metresToShowX / 2)) {
if (objectY - objectHeight <
currentViewportWorldCentre.y +
(metresToShowY / 2)) {
if (objectY + objectHeight >
currentViewportWorldCentre.y -
(metresToShowY / 2)){
clipped = false;
}
}
}
}
return clipped;
}
Первые два "if" проверяют попадание по X, следующие два по Y. Я понимаю как работает 2-ой "if" - т.е. если левый край объекта находится левее экрана, но объект длинный и правый край объекта всё-таки дотягивается до экрана. Значит он будет видим. Тут понятно. Но 1-ый "if"? Если левый край объекта вышел за правый край экрана, то ширина объекта не имеет никакого значения. Зачем использовать её в вычислении? Тот же самый вопрос возникает и по оси Y. Или я что-то не так понял?
Ответы (1 шт):
Похоже, что objectX - центр, а objectWidth- полуширина. Тогда
если левый край объекта левее правого края окна
и если правый край объекта правее левого края окна
и по Y
то в окно попадает
Можно все условия и логику комбинирования (и/или) инвертировать, это кажется более очевидным:
если левый край правее правого края окна
или если правый край объекта левее левого края окна
то ясно, что НЕ попадает