The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Triangles

library(nara)

{nara} has three ways to draw triangles:

For single triangles, nr_polygon() is sufficient. For large numbers of polygons, the nr_tri_* functions will be much much faster.

This vignette demonstrates the drawing of two triangles using each of these functions.

Demo setup

Define 5 points on the image which will be used as the vertices of two triangles

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Define image size 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
w <- h <- 300
th <- 16 # text height

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Define 5 points within the canvas
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ax <- w/2     ; ay <- 0 + th
bx <- w/2     ; by <- h/2     
cx <-     th/2; cy <- h/2     
dx <- w/2     ; dy <- h - th/2           
ex <- w - th/2; ey <- h/2

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Label the points in an image
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nr <- nr_new(w, h)
nr_text_mono(nr, ax, ay, 'A', fontsize = th)
nr_text_mono(nr, bx, by, 'B', fontsize = th)
nr_text_mono(nr, cx, cy, 'C', fontsize = th)
nr_text_mono(nr, dx, dy, 'D', fontsize = th)
nr_text_mono(nr, ex, ey, 'E', fontsize = th)

plot(nr)

Render triangles with nr_polygon()

Render two triangles by using two calls to nr_polygon().

Render triangles with nr_tri_mesh()

nr_tri_mesh() expects the triangles to be defined in two parts:

  1. A matrix of vertex coordinates
    • x values in the first row, y values in the second row. (Further rows are ignored)
  2. An integer matrix of indices.
    • The first 3 values in each column define the columns in the vertices matrix which define the triangle.

This mesh data definition is a similar format to the mesh3d class of data defined in the {rgl} package.

# define all the vertex coordinates
vertices <- rbind(
  c(ax, bx, cx, dx, ex),
  c(ay, by, cy, dy, ey)
)

# Define the indices.  Each column in this matrix represents 1 triangle.
# The three numbers reprsent the column index in the `vertices` data
indices <- rbind(
  # 1  2
  c(1, 2),
  c(2, 4),
  c(3, 5)
)


nr <- nr_new(w, h)
nr_tri_mesh(nr, vertices, indices, c('blue', 'red'))

plot(nr)

Render triangles with nr_tri_coords()

nr_tri_coords() requires just the raw coordinates of all vertices in a single matrix. The first row has the x coordinates, the second row has the y coordinates.

Each group of 3 columns defines a triangle

coords <- rbind(
  # <<<  1 >>>    <<<  2 >>>>
  c(ax, bx, cx,   bx, dx, ex),
  c(ay, by, cy,   by, dy, ey)
)

nr <- nr_new(w, h)
nr_tri_coords(nr, coords, color = c('blue', 'red'))

plot(nr)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.