x, y координаты JPanel как часть квадранта - PullRequest
0 голосов
/ 23 мая 2018

У меня проблемы с моей программой.я хочу реализовать способ понять точку (x, y), в которой расположен квадрант.

Концепция квадранта, которую я пытаюсь реализовать, заключается в следующем: enter image description here

У меня есть прямоугольник, из которого у меня есть координаты всех углов и ребер.учитывая другую точку в пространстве, в 2D-пространстве, я хотел бы знать, где находится между верхом, низом, слева и справа.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

До сих пор я написал этот фрагмент кода:

Point A=t.src;  //center point of the first square
Point B=t.dest;  //center point of the second square

int destHeight=t.destDim.height;
int destWidth=t.destDim.width;

int m = destHeight/destWidth;
int b = B.y -(m*B.x);
int d = B.y +(m*B.x);

if(A.y >= m*A.x +b){
    if(A.y >= -m*A.x+d){
        System.err.println("2 - Source on BOTTOM");
    }else{ //A.y < -m*A.x+d
        System.err.println("2 - Source on LEFT");
    } 
}else if(A.y < m*A.x + b){
    if(A.y>= -m*A.x +d){
        System.err.println("2 - Source on RIGHT");
    }else{ //A.y < m*A.x + d
        System.err.println("2 - Source on TOP");
    }
}

Проблема в том, что у меня все еще нет ожидаемого результата.Вот что я получаю: Видео-демонстрация проблемы

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

1 Ответ

0 голосов
/ 24 мая 2018

Пусть прямоугольник расположен по центру нуля и имеет длину ребра a (по горизонтали) и b.(Если он не центрирован по нулю, просто вычтите координаты центра из точечных).Тогда у линий есть простые уравнения

m = b / a 
y = m * x   //L1
y = -m * x  //L2

Точка в верхнем квадранте лежит выше обеих линий, точка в правом квадранте лежит выше L2, но ниже L1 и так далее.

Для координат точки (px, py):

 mpx = m * px
 if (py >= mpx) :
     if (py >= -mpx) :
          top
     else:
          left
 else:    
     if (py >= -mpx) :
          right
     else:
          bottom
...