2015-03-23 2 views
0

Я хочу проверить, пересекаются ли два прямоугольника друг с другом! У меня есть класс GLObject, который представляет элементы, которые отображаются на экране. И мой класс игры, который делает другие игровые вещи. Работает рендеринг с OpenGLEs 2.0! В 2 Элементы отображаются правильно, но если я переместить одну позицию в другой ничего не происходит .. Прямоугольники и вершины являются правильными (Proof: правильные позиции текстур на экране/Log выход)Android Rect.intersects не работает?

В классе Game:

@Override 
public void Process(long elapsed) 
{ 
    // TODO: Implement this method 
    super.Process(elapsed); 

    Rect r1 = mtest1.getRect(); // get Rectangle 
    Rect r2 = mtest2.getRect(); 

    if (Rect.intersects(r1, r2)) // always false 
     System.exit(0); 

    //Log.e("logpos", "left" + r1.left + " top" + r1.top + " right" + r1.right + " bottom" + r1.bottom); 
    //this logs the correct position: 
    //left830 top200 right920 bottom100 for r1 
    //left810 top200 right900 bottom100 for r2 

    r1 = r2; // make them equal for testing 

    if (Rect.intersects(r1, r2)) // always flase 
     System.exit(0); 
} 

В моем GLObject классе:

private float mRect[] = 
{ 
    //counterclockwise 
    10.0f, 200f, 0.0f, // top left 
    10.0f, 100f, 0.0f, // bottom left 
    100f, 100f, 0.0f, // bottom right 
    100f, 200f, 0.0f // top right 
}; 

//... 

public Rect getRect() 
{ 
    return new Rect((int)mRect[0], 
        (int)mRect[1], 
        (int)mRect[6], 
        (int)mRect[4]); 
} 
+0

Однако ... я понял, что он работает, если я обмениваюсь нижним и верхним в getRect()! Но я не знаю, почему .. – lolxdfly

ответ

0

Я думаю, что у меня есть решение: система координат моей OpenGL сцены и Android Rect класса отличаются:

^ 
I 
I 
I  OpenGL 
I 
I 
I===========================> 


I===========================> 
I 
I 
I  Android Rect Class 
I 
I 
v 

(пейзаж)

Я изменил Орто и теперь он работает.