2015-09-27 2 views
2

В принципе, представить себе область на основе местоположения с шириной 9 (начиная с 0)Преобразование назад и вперед между положением (слот) и координировать

╔════╦════╦════╦════╦════╦════╦════╦════╦════╗ 
║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 
║ 9 ║ 10 ║ 11 ║ 12 ║ 13 ║ 14 ║ 15 ║ 16 ║ 17 ║ 
║ 18 ║ 19 ║ 20 ║ 21 ║ 22 ║ 23 ║ 24 ║ 25 ║ 26 ║ 
╚════╩════╩════╩════╩════╩════╩════╩════╩════╝ 

Однако я не преобразование в координаты и обратно с положение 0, как (0,0) Это, по сути, что я пытаюсь получить

╔══════╦══════╦══════╦══════╦═════╦═════╦═════╦═════╦═════╗ 
║ -4,1 ║ -3,1 ║ -2,1 ║ -1,1 ║ 0,1 ║ 1,1 ║ 2,1 ║ 3,1 ║ 4,1 ║ 
║ -4,2 ║ -3,2 ║ -2,2 ║ -1,2 ║ 0,2 ║ 1,2 ║ 2,2 ║ 3,2 ║ 4,2 ║ 
║ -4,3 ║ -3,3 ║ -2,3 ║ -1,3 ║ 0,3 ║ 1,3 ║ 2,3 ║ 3,3 ║ 4,3 ║ 
╚══════╩══════╩══════╩══════╩═════╩═════╩═════╩═════╩═════╝ 

по существу, центр значения X 0, идущую влево или вправо, уменьшение или увеличение. Однако я не задал y как центр, так как значение Y может расширяться до бесконечности.

Мне нужно, чтобы выяснить, как сделать это с помощью следующих методов в Java

getPosition(int x, int y); //RETURNS (int position) 
getCoordinates(int position) //RETURNS (int x, int y) 

Любые идеи?

+0

Вы ищете модуль и подразделение? http://www.cafeaulait.org/course/week2/15.html –

+0

Да, я уверен, что это способ сделать это, но у меня проблемы с ним. –

ответ

1

Используйте следующие методы. Обратите внимание, что я использовал java.awt.Point для представления x и y координаты в методе getCoordinates(int position).

public int getPosition(int x, int y) { 
    return ((y - 1) * 9) + (x + 4); 
} 

public Point getCoordinates(int position) { 
    //calculate x and y 
    int y = (int) ((position/9) + 1); 
    int x = (position - ((y - 1) * 9)) - 4; 

    Point point = new Point(x, y); 
    return point; 
} 
+1

Спасибо! Похоже, что мне нужно, я проверю это! –

+1

Да, просто хотел проверить. Работает! –

+1

Я бы настоятельно предложил удалить все магические числа и вместо этого заменить на final. Тогда гораздо проще изменить ширину. – holroy

Смежные вопросы