This paste brought to you by Pastebin. View Raw

  1. # Need a function to draw circle
  2. circle_fun <- function(center=c(0,0), diameter=1, npoints=500, start=0, end=2){
  3. tt <- seq(start*pi, end*pi, length.out=npoints)
  4. x = center[1] + diameter / 2 * cos(tt),
  5. y = center[2] + diameter / 2 * sin(tt)
  6. )
  7. }
  8. # Need symmetry
  9. rev_y <- function(y) 94-y
  10. # Create data frame containing coordinates of polygons
  11. new_coords <- function(x, y, group, descri){
  12. new_coords_df <- data.frame(x = x, y = y)
  13. new_coords_df$group <- group
  14. new_coords_df$side <- 1
  15. group <- group + 1
  16. # The same thing for the opposite side
  17. new_coords_df2 <- data.frame(x = x, y = rev_y(y))
  18. new_coords_df2$group <- group
  19. new_coords_df2$side <- 2
  20. group <<- group + 1
  21. # On reunit les donnees
  22. new_coords_df <- rbind(new_coords_df, new_coords_df2)
  23. new_coords_df$descri <- descri
  24. return(new_coords_df)
  25. }
  26. #Circles we need
  27. # Restricted area
  28. cercle_np_out <- circle_fun(center = c(25,5+3/12), diameter = (4+1/6)*2)
  29. cercle_np_in <- circle_fun(center = c(25,5+3/12), diameter = 4*2)
  30. # Three point
  31. cercle_3pts_out <- circle_fun(center = c(25,5+3/12), diameter = (23+9/12)*2)
  32. cercle_3pts_in <- circle_fun(center = c(25,5+3/12), diameter = (23+7/12)*2)
  33. # Hoop
  34. cercle_ce <- circle_fun(center = c(25,5+3/12), diameter = 1.5)
  35. # Free Throws
  36. cercle_lf_out <- circle_fun(center = c(25,19), diameter = 6*2)
  37. cercle_lf_in <- circle_fun(center = c(25,19), diameter = (6-1/6)*2)
  38. # Center Circle
  39. cercle_mil_out <- circle_fun(center = c(25,47), diameter = 6*2)
  40. cercle_mil_in <- circle_fun(center = c(25,47), diameter = (6-1/6)*2)
  41. # Small Center Circle
  42. cercle_mil_petit_out <- circle_fun(center = c(25,47), diameter = 2*2)
  43. cercle_mil_petit_in <- circle_fun(center = c(25,47), diameter = (2-1/6)*2)
  44. #We need to assign the first value of the variable group. Then, each use of new_coords increments group value by one.
  45. group <- 1
  46. court <- new_coords(c(0-1/6,0-1/6,50 + 1/6,50 + 1/6), c(0 - 1/6,0,0,0 - 1/6), group = group, descri = "ligne de fond")
  47. court <- rbind(court, new_coords(x = c(0-1/6,0-1/6,0,0), y = c(0,47-1/12,47-1/12,0), group = group, descri = "ligne gauche"))
  48. court <- rbind(court, new_coords(x = c(50,50,50+1/6,50+1/6), y = c(0,47-1/12,47-1/12,0), group = group, descri = "ligne droite"
  49. court <- rbind(court, new_coords(x = c(0,0,3,3), y = c(28,28+1/6,28+1/6,28), group = group, descri = "marque entraineur gauche"
  50. Tutorial 4
  51. court <- rbind(court, new_coords(x = c(47,47,50,50), y = c(28,28+1/6,28+1/6,28), group = group, descri = "marque entraineur dro
  52. court <- rbind(court, new_coords(x = c(3,3,3+1/6,3+1/6), y = c(0,14,14,0), group = group, descri = "3pts bas gauche"))
  53. court <- rbind(court, new_coords(x = c(47-1/6,47-1/6,47,47), y = c(0,14,14,0), group = group, descri = "3pts bas droit"))
  54. court <- rbind(court, new_coords(x = c(17,17,17+1/6,17+1/6), y = c(0,19,19,0), group = group, descri = "LF bas gauche"))
  55. court <- rbind(court, new_coords(x = c(33-1/6,33-1/6,33,33), y = c(0,19,19,0), group = group, descri = "LF bas droit"))
  56. court <- rbind(court, new_coords(x = c(17,17,33,33), y = c(19-1/6,19,19,19-1/6), group = group, descri = "LF tireur"))
  57. court <- rbind(court, new_coords(x = c(14-1/6,14-1/6,14,14), y = c(0,1/2,1/2,0), group = group, descri = "marque fond gauche"))
  58. court <- rbind(court, new_coords(x = c(36,36,36+1/6,36+1/6), y = c(0,1/2,1/2,0), group = group, descri = "marque fond droit"))
  59. court <- rbind(court, new_coords(x = c(19,19,19+1/6,19+1/6), y = c(0,19,19,0), group = group, descri = "LF gauche interieur"))
  60. court <- rbind(court, new_coords(x = c(31-1/6,31-1/6,31,31), y = c(0,19,19,0), group = group, descri = "LF droite interieur"))
  61. court <- rbind(court, new_coords(x = c(22, 22, 28, 28), y = c(4-1/6,4,4,4-1/6), group = group, descri = "planche"))
  62. court <- rbind(court, new_coords(x = c(cercle_3pts_out[31:220,"x"], rev(cercle_3pts_in[31:220,"x"])),
  63. y = c(cercle_3pts_out[31:220,"y"], rev(cercle_3pts_in[31:220,"y"])), group = group, descri = "
  64. court <- rbind(court, new_coords(x = c(cercle_np_out[1:250,"x"], rev(cercle_np_in[1:250,"x"])),
  65. y = c(cercle_np_out[1:250,"y"], rev(cercle_np_in[1:250,"y"])), group = group, descri = "cercle
  66. court <- rbind(court, new_coords(x = c(20+1/6,20+1/6,20+8/12,20+8/12), y = c(13,13+1/6,13+1/6,13), group = group, descri = "mar
  67. court <- rbind(court, new_coords(x = c(30-8/12,30-8/12,30-1/6,30-1/6), y = c(13,13+1/6,13+1/6,13), group = group, descri = "mar
  68. court <- rbind(court, new_coords(x = c(cercle_lf_out[1:250,"x"], rev(cercle_lf_in[1:250,"x"])),
  69. y = c(cercle_lf_out[1:250,"y"], rev(cercle_lf_in[1:250,"y"])), group = group, descri = "cercle
  70. court <- rbind(court, new_coords(x = c(cercle_lf_out[250:269,"x"], rev(cercle_lf_in[250:269,"x"])),
  71. y = c(cercle_lf_out[250:269,"y"], rev(cercle_lf_in[250:269,"y"])), group = group, descri = "ce
  72. court <- rbind(court, new_coords(x = c(cercle_lf_out[288:308,"x"], rev(cercle_lf_in[288:308,"x"])),
  73. y = c(cercle_lf_out[288:308,"y"], rev(cercle_lf_in[288:308,"y"])), group = group, descri = "ce
  74. court <- rbind(court, new_coords(x = c(cercle_lf_out[327:346,"x"], rev(cercle_lf_in[327:346,"x"])),
  75. y = c(cercle_lf_out[327:346,"y"], rev(cercle_lf_in[327:346,"y"])), group = group, descri = "ce
  76. court <- rbind(court, new_coords(x = c(cercle_lf_out[365:385,"x"], rev(cercle_lf_in[365:385,"x"])),
  77. y = c(cercle_lf_out[365:385,"y"], rev(cercle_lf_in[365:385,"y"])), group = group, descri = "ce
  78. court <- rbind(court, new_coords(x = c(cercle_lf_out[404:423,"x"], rev(cercle_lf_in[404:423,"x"])),
  79. y = c(cercle_lf_out[404:423,"y"], rev(cercle_lf_in[404:423,"y"])), group = group, descri = "ce
  80. court <- rbind(court, new_coords(x = c(cercle_lf_out[442:462,"x"], rev(cercle_lf_in[442:462,"x"])),
  81. y = c(cercle_lf_out[442:462,"y"], rev(cercle_lf_in[442:462,"y"])), group = group, descri = "ce
  82. court <- rbind(court, new_coords(x = c(cercle_lf_out[481:500,"x"], rev(cercle_lf_in[481:500,"x"])),
  83. y = c(cercle_lf_out[481:500,"y"], rev(cercle_lf_in[481:500,"y"])), group = group, descri = "ce
  84. court <- rbind(court, new_coords(x = c(17-0.5,17-0.5,17,17), y = c(7,7+1/6,7+1/6,7), group = group, descri = "marque 1 LF gauch
  85. court <- rbind(court, new_coords(x = c(17-0.5,17-0.5,17,17), y = c(8+1/6,8+1/3,8+1/3,8+1/6), group = group, descri = "marque 2
  86. court <- rbind(court, new_coords(x = c(17-0.5,17-0.5,17,17), y = c(11+1/3,11.5,11.5,11+1/3), group = group, descri = "marque 3
  87. court <- rbind(court, new_coords(x = c(17-0.5,17-0.5,17,17), y = c(14.5,14.5+1/6,14.5+1/6,14.5), group = group, descri = "marqu
  88. court <- rbind(court, new_coords(x = c(33,33,33+0.5,33+0.5), y = c(7,7+1/6,7+1/6,7), group = group, descri = "marque 1 LF droit
  89. court <- rbind(court, new_coords(x = c(33,33,33+0.5,33+0.5), y = c(8+1/6,8+1/3,8+1/3,8+1/6), group = group, descri = "marque 2
  90. court <- rbind(court, new_coords(x = c(33,33,33+0.5,33+0.5), y = c(11+1/3,11.5,11.5,11+1/3), group = group, descri = "marque 3
  91. court <- rbind(court, new_coords(x = c(33,33,33+0.5,33+0.5), y = c(14.5,14.5+1/6,14.5+1/6,14.5), group = group, descri = "marqu
  92. court <- rbind(court, new_coords(x = c(0-1/6,0-1/6,50+1/6,50+1/6), y = c(94/2-1/12,94/2, 94/2, 94/2-1/12), group = group, descr
  93. court <- rbind(court, new_coords(x = c(cercle_mil_out[250:500,"x"], rev(cercle_mil_in[250:500,"x"])),
  94. y = c(cercle_mil_out[250:500,"y"], rev(cercle_mil_in[250:500,"y"])), group = group, descri = "
  95. court <- rbind(court, new_coords(x = c(cercle_mil_petit_out[250:500,"x"], rev(cercle_mil_petit_in[250:500,"x"])),
  96. y = c(cercle_mil_petit_out[250:500,"y"], rev(cercle_mil_petit_in[250:500,"y"])), group = group
  97. court <- rbind(court, new_coords(x = cercle_ce[,"x"], y = cercle_ce[,"y"], group = group, descri = "anneau"))
  98. #Create the graph
  99. P <- ggplot() + geom_polygon(data = court, aes(x = x, y = y, group = group), col = "black") +
  100. coord_equal() +
  101. ylim(-2,96) +
  102. xlim(-5,55) +
  103. scale_x_continuous(breaks = c(0, 12.5, 25, 37.5, 50)) +
  104. scale_y_continuous(breaks = c(0, 23.5, 47, 70.5, 94)) +
  105. xlab("") + ylab("") +
  106. theme(axis.text.x = element_blank(),
  107. axis.text.y = element_blank(), axis.ticks.x = element_blank(),
  108. axis.ticks.y = element_blank(), axis.title = element_blank()
  109. )
  110. P
  111. halfP <- P + coord_cartesian(ylim = c(-2, 44.7))
  112. halfP