# BUILD DATA FRAME
Radius <- 1
Horizontal_Coordinates <- seq(-Radius, Radius, 0.01)
Positive_Vertical_Coordinates <- sqrt((Radius ^ 2) - (Horizontal_Coordinates ^ 2))
Negative_Vertical_Coordinates <- -sqrt((Radius ^ 2) - (Horizontal_Coordinates ^ 2))
Circle_Coordinates <- data.frame(
    Horizontal_Coordinates = c(
        Horizontal_Coordinates, 
        rev(Horizontal_Coordinates), 
        Horizontal_Coordinates[1]
    ),
    Vertical_Coordinates = c(
        Positive_Vertical_Coordinates,
        rev(Negative_Vertical_Coordinates),
        Positive_Vertical_Coordinates[1]
    )
)

# ASSIGN RANDOM POINTS
set.seed(122524)

Random_Angle_1 <- runif(1, 0, (2 * pi))
Random_Angle_2 <- runif(1, 0, (2 * pi))
Point_1 <- c(cos(Random_Angle_1), sin(Random_Angle_1))
Point_2 <- c(cos(Random_Angle_2), sin(Random_Angle_2))


# SUBSET DATA FRAME
sub <- subset(
    Circle_Coordinates,
    (
        Horizontal_Coordinates > min(Point_1[1], Point_2[1]) &
        Horizontal_Coordinates < max(Point_1[1], Point_2[1]) &
        sign(Horizontal_Coordinates) == sign(Point_1[1]) &
        sign(Horizontal_Coordinates) == sign(Point_2[1])
    ) &
    (
        Vertical_Coordinates > min(Point_1[2], Point_2[2]) &
        Vertical_Coordinates < max(Point_1[2], Point_2[2]) &
        sign(Vertical_Coordinates) == sign(Point_1[2]) &
        sign(Vertical_Coordinates) == sign(Point_2[2])
    )
)

# PLOT CIRCLE AND POINTS
plot(0, type = "n", xlim = c(-(Radius * 1.05), (Radius * 1.05)), ylim = c(-(Radius * 1.05), (Radius * 1.05)), xlab = "", ylab = "")
polygon(Circle_Coordinates$Horizontal_Coordinates, Circle_Coordinates$Vertical_Coordinates)

for(i in 1:nrow(sub)) {
  points(
      sub$Horizontal_Coordinates[i], 
      sub$Vertical_Coordinates[i],
      pch = 19,
      col = 4
  )
}

points(Point_1[1], Point_1[2], pch = 19, col = 2)
points(Point_2[1], Point_2[2], pch = 19, col = 2)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: