DarianFlorianVoda / BioShapes

Bachelor Thesis R Package
0 stars 0 forks source link

arrowDiamond: add join argument #44

Closed discoleo closed 2 years ago

discoleo commented 2 years ago

Join Argument

Function arrowDiamond

#### Arrow Diamond ####
arrowDiamond = function(x, y, d=0.2, lwd=1, d.head=-1, d.lines=0, h.lwd=lwd, col="red", scale=1, join=0) {
  if(join > 2) stop("Unsupported value for join!");
  slope = compute_slope(x, y);
  ### Head
  ahead  = list(arrowHeadDiamond(x[2], y[2], slope=slope, d=d, scale=scale), lwd = h.lwd);
  ### ArrowTail
  if(join == 0 || join == 1) {
    x[2] = ahead[[1]]$x[2];
    y[2] = ahead[[1]]$y[2];
  }
  arrow = arrowTail(x, y, d.lines=d.lines, lwd=lwd, slope=slope);
  ### Full Arrow
  lst = list(Arrow=arrow, Head=ahead);
  class(lst) = c("arrow", "list");
  # Plot lines:
  lines(lst, col=col);
  invisible(lst);
}

Tests

default join

plot.base() x = c(0, 6); y = c(1, 6); arrowDiamond(x, y, d=-1, lwd=2); arrowDiamond(c(x[1], 5), c(y[1], y[1]), d=-1, lwd=2); arrowDiamond(c(x[1], x[1]), c(y[1], 5), d=-1, lwd=2);

join through

plot.base() x = c(0, 6); y = c(1, 6); arrowDiamond(x, y, d=-1, lwd=2, join=2); arrowDiamond(c(x[1], 5), c(y[1], y[1]), d=-1, lwd=2, join=2); arrowDiamond(c(x[1], x[1]), c(y[1], 5), d=-1, lwd=2, join=2);

DarianFlorianVoda commented 2 years ago

Added.