public int[] getUValues(double x, double y) {
        int xPos = (int) (x * xRatio);
        int yPos = (int) (y * yRatio);
        
        int[] uValues = new int[4];
        if (xPos >= ncell_x || yPos >= ncell_y ||
            x < 0 || y < 0) {
            return uValues;
        }
        
        if (yPos - 1 < 0) {
            uValues[2] = Integer.MAX_VALUE;
        } else {
            uValues[2] = floorMarkings[yPos-1][xPos];
        }
        
        if (xPos - 1 < 0) {
            uValues[1] = Integer.MAX_VALUE;
        } else {
            uValues[1] = floorMarkings[yPos][xPos-1];
        }
        
        if (yPos + 1 >= ncell_y) {
            uValues[0] = Integer.MAX_VALUE;
        } else {
            uValues[0] = floorMarkings[yPos+1][xPos];
        }
        
        if (xPos + 1 >= ncell_x) {
            uValues[3] = Integer.MAX_VALUE;
        } else {
            uValues[3] = floorMarkings[yPos][xPos+1];
        }
        
        return uValues;
    }