# CSC 120, Spring 2015, Function definitions for Assignment 1. read_links <- function (nsites, file) { links <- list() for (i in 1:nsites) { links[[i]] <- scan(paste(file,i,sep="")) for (j in links[[i]]) { if (j < 1) stop("Invalid link") if (j > nsites) stop("Invalid link") } } links } show_data <- function (link_data, max_keep=1000000000) { plot_arc (length(link_data)) plot_links (link_data, max_keep) } plot_arc <- function (nsites) { plot(c(),xlim=c(-1.05,1.05),ylim=c(0,1.05),asp=1, xlab="",ylab="",xaxt="n",yaxt="n") pts <- arc_points(nsites) points(pts$x,pts$y) f <- 1.07 text (f*pts$x, f*pts$y, 1:nsites, cex=0.7) } plot_links <- function (links, max_keep=1000000000) { nsites <- length(links) pts <- arc_points(nsites) for (i in 1:nsites) { keep <- length(links[[i]]) <= max_keep for (j in links[[i]]) thick_start_line (c(pts$x[i],pts$y[i]), c(pts$x[j],pts$y[j]), thin_part=keep) } } arc_points <- function (nsites) { angles <- pi - (0:(nsites-1))*pi/(nsites-1) list (x=cos(angles), y=sin(angles)) } thick_start_line <- function (a, b, thin_part) { if (thin_part) lines (c(a[1],b[1]), c(a[2],b[2]), lwd=1, type="c") end_length <- 0.15 dir <- (b-a) / sqrt(sum((b-a)^2)) e <- a + end_length * dir lines (c(a[1],e[1]), c(a[2],e[2]), lwd=3, type="c") }