make_soccer_map_pp <- function(rcg) {
    soocer_field = c(6000,104,68)
    names(soocer_field) = c("time","length","width")
    soccer_map <- array(0, dim = c(6000,13,104,68))

    for(i in seq_along(rcg)){
        # SP - (x,y) location	1 on attacking players’ location (x,y)
        px <- round(rcg$x[i])+soocer_field["length"]/2
        py <- round(rcg$y[i])+soocer_field["width"]/2
        bx <- round(rcg$ball_x[i])+soocer_field["length"]/2
        by <- round(rcg$ball_y[i])+soocer_field["width"]/2
        step <- rcg$step[i]
        if(rcg$side[i]=="l"){
            soccer_map[step,1,px,py] = rcg$unum[i]
            soccer_map[step,3,px,py] = rcg$vx[i]
            soccer_map[step,4,px,py] = rcg$vy[i]
        }else if (rcg$side[i]=="r"){
            soccer_map[step,2,px,py] = rcg$unum[i]
            soccer_map[step,5,px,py] = rcg$vx[i]
            soccer_map[step,6,px,py] = rcg$vy[i]
        }
        soccer_map[step,7,px,py] = atan(py/(soocer_field["length"]/2 - px))
        dist_p_b = sqrt((bx-px)^2+(by-py)^2)
        dist_p_g = sqrt(((soocer_field["length"]/2)-px)^2+(py)^2)

        soccer_map[step,8,px,py] = (py-by) / dist_p_b
        soccer_map[step,9,px,py] = (px-bx) / dist_p_b
        soccer_map[step,10,px,py] = py / dist_p_g
        soccer_map[step,11,px,py] = px / dist_p_g
        soccer_map[step,12,px,py] = dist_p_b
        soccer_map[step,13,px,py] = dist_p_g
    }
    return(soccer_map)
}

make_soccer_map_ps <- function(rcg) {
    soocer_field = c(6000,104,68)
    names(soocer_field) = c("time","length","width")
    soccer_map <- array(0, dim = c(6000,13,104,68))

    for(i in seq_along(rcg)){
        # SP - (x,y) location	1 on attacking players’ location (x,y)
        px <- round(rcg$x[i])+soocer_field["length"]/2
        py <- round(rcg$y[i])+soocer_field["width"]/2
        bx <- round(rcg$ball_x[i])+soocer_field["length"]/2
        by <- round(rcg$ball_y[i])+soocer_field["width"]/2
        step <- rcg$step[i]
        if(rcg$side[i]=="l"){
            soccer_map[step,1,px,py] = rcg$unum[i]
            soccer_map[step,3,px,py] = rcg$vx[i]
            soccer_map[step,4,px,py] = rcg$vy[i]
        }else if (rcg$side[i]=="r"){
            soccer_map[step,2,px,py] = rcg$unum[i]
            soccer_map[step,5,px,py] = rcg$vx[i]
            soccer_map[step,6,px,py] = rcg$vy[i]
        }
        soccer_map[step,7,px,py] = atan(py/(soocer_field["length"]/2 - px))
        dist_p_b = sqrt((bx-px)^2+(by-py)^2)
        dist_p_g = sqrt(((soocer_field["length"]/2)-px)^2+(py)^2)

        soccer_map[step,8,px,py] = (py-by) / dist_p_b
        soccer_map[step,9,px,py] = (px-bx) / dist_p_b
        soccer_map[step,10,px,py] = py / dist_p_g
        soccer_map[step,11,px,py] = px / dist_p_g
        soccer_map[step,12,px,py] = dist_p_b
        soccer_map[step,13,px,py] = dist_p_g
    }
    return(soccer_map)
}

make_soccer_map_pe <- function(rcg) {
    soocer_field = c(6000,104,68)
    names(soocer_field) = c("time","length","width")
    soccer_map <- array(0, dim = c(6000,13,104,68))

    for(i in seq_along(rcg)){
        # SP - (x,y) location	1 on attacking players’ location (x,y)
        px <- round(rcg$x[i])+soocer_field["length"]/2
        py <- round(rcg$y[i])+soocer_field["width"]/2
        bx <- round(rcg$ball_x[i])+soocer_field["length"]/2
        by <- round(rcg$ball_y[i])+soocer_field["width"]/2
        step <- rcg$step[i]
        if(rcg$side[i]=="l"){
            soccer_map[step,1,px,py] = rcg$unum[i]
            soccer_map[step,3,px,py] = rcg$vx[i]
            soccer_map[step,4,px,py] = rcg$vy[i]
        }else if (rcg$side[i]=="r"){
            soccer_map[step,2,px,py] = rcg$unum[i]
            soccer_map[step,5,px,py] = rcg$vx[i]
            soccer_map[step,6,px,py] = rcg$vy[i]
        }
        soccer_map[step,7,px,py] = atan(py/(soocer_field["length"]/2 - px))
        dist_p_b = sqrt((bx-px)^2+(by-py)^2)
        dist_p_g = sqrt(((soocer_field["length"]/2)-px)^2+(py)^2)

        soccer_map[step,8,px,py] = (py-by) / dist_p_b
        soccer_map[step,9,px,py] = (px-bx) / dist_p_b
        soccer_map[step,10,px,py] = py / dist_p_g
        soccer_map[step,11,px,py] = px / dist_p_g
        soccer_map[step,12,px,py] = dist_p_b
        soccer_map[step,13,px,py] = dist_p_g
    }
    return(soccer_map)
}