Description Usage Arguments Details Value Note Author(s) References See Also Examples
This algorithm decomposes a general polygon into simple polygons and uses the “ear-clipping” algorithm to triangulate it. Polygons with holes are supported.
1  | 
x, y, z | 
 Coordinates of a two-dimensional polygon in a format supported by   | 
random | 
 Whether to use a random or deterministic triangulation.  | 
plot | 
 Whether to plot the triangulation; mainly for debugging purposes.  | 
partial | 
 If the triangulation fails, should partial results be returned?  | 
Normally triangulate looks only at the x and y
coordinates.  However, if one of those is constant, it is replaced
with the z coordinate if present.
The algorithm works as follows.  First, it breaks the polygon into 
pieces separated by NA values in x or y.
Each of these pieces should be a simple, non-self-intersecting
polygon, separate from the other pieces. 
(Though some minor exceptions to this rule may work, none
are guaranteed).  The nesting of these pieces is determined.
The “outer” polygon(s) are then merged with the polygons that they immediately contain, and each of these pieces is triangulated using the ear-clipping algorithm.
Finally, all the triangulated pieces are put together into one result.
A three-by-n array giving the indices of the vertices of each triangle. (No vertices are added; only the original vertices are used in the triangulation.)
The array has an integer vector attribute "nextvert"
with one entry per vertex, giving the index of the next 
vertex to proceed counter-clockwise around outer
polygon boundaries, clockwise around inner boundaries.
Not all inputs will succeed, even when a triangulation is
possible.  Generally using random = TRUE will find
a successful triangulation if one exists, but it may
occasionally take more than one try.
Duncan Murdoch
See the Wikipedia article “polygon triangulation” for a description of the ear-clipping algorithm.
extrude3d for a solid extrusion of a polygon, polygon3d for
a flat display; both use triangulate.
1 2 3 4 5 6 7 8 9 10 11  | theta <- seq(0, 2*pi, len = 25)[-25]
theta <- c(theta, NA, theta, NA, theta, NA, theta, NA, theta)
r <- c(rep(1.5, 24), NA, rep(0.5, 24), NA, rep(0.5, 24), NA, rep(0.3, 24), NA, rep(0.1, 24))
dx <- c(rep(0, 24), NA, rep(0.6, 24), NA, rep(-0.6, 24), NA, rep(-0.6, 24), NA, rep(-0.6, 24))
x <- r*cos(theta) + dx
y <- r*sin(theta)
plot(x, y, type = "n")
polygon(x, y)
triangulate(x, y, plot = TRUE)
open3d()
polygon3d(x, y, x - y, col = "red")
 | 
Warning messages:
1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'. 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
[1,]    5   57    5   56   56   55   54    5   53    12    52    12    52    36
[2,]   58   56   59   36   55   54   53   12   52    60    37    61    51    35
[3,]   57    5   58    5   36   36   36   59   36    59    36    60    37     5
     [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
[1,]    35    51    34    74    33    74    73    12    12    12    12    32
[2,]    34    74    33    38    32    73    72    62    63    64    65    31
[3,]     5    37     5    37     5    38    38    61    62    63    64     5
     [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
[1,]    31    72    12    72    71    13    71    30    13    29    28    19
[2,]    30    39    13    71    40    66    70    29    19    28     2    67
[3,]     5    38    65    39    39    65    40     5    66     5     5    66
     [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,]    19    70    28    19    19    27    70    70    26    26    19     2
[2,]    68    41    27    69    44    26    42    69    22    49    45     4
[3,]    67    40     2    68    69     2    41    42     2    22    44     5
     [,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62]
[1,]    49    19    48    21    13     5    47    22    22    13    44    19
[2,]    48    21    47    46    17     7    46     1    24    16    43    20
[3,]    22    45    22    45    19    12    22     2     1    17    69    21
     [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74]
[1,]     7    46     5    17    22    13     7    43     8    14     2     9
[2,]    11    21     6    18    23    14     8    42     9    15     3    10
[3,]    12    22     7    19    24    16    11    69    11    16     4    11
     [,75] [,76] [,77] [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86]
[1,]   116   115   114   113    91   112    91    91    91   111   111   110
[2,]   115   114   113   112   117   111   118   119   120    89   110   109
[3,]    91    91    91    91   116    91   117   118   119    91    89    89
     [,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98]
[1,]   109   109    91    91   108   107    76   106    76    76    76   105
[2,]    81   108   121    76   107   106   122   105   123   124   101   104
[3,]    89    81   120   121    81    81   121    81   122   123   124    81
     [,99] [,100] [,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108]
[1,]   104     81    103     76     81    102     77     91     91     96
[2,]   103     87    102     77     86     80     80     96     92     98
[3,]    81     89     81    101     87     81    101     76     96     76
     [,109] [,110] [,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118]
[1,]     77     92     96     80     92     89     78     98     94     81
[2,]     78     94     97    102     93     90     79     99     95     85
[3,]     80     96     98    101     94     91     80     76     96     86
     [,119] [,120] [,121] [,122]
[1,]     87     81     82     83
[2,]     88     82     83     84
[3,]     89     85     85     85
attr(,"nextvert")
  [1]   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
 [19]  20  21  22  23  24   1  NA  49  26  27  28  29  30  31  32  33  34  35
 [37]  36  37  38  39  40  41  42  43  44  45  46  47  48  NA  74  51  52  53
 [55]  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71
 [73]  72  73  NA  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91
 [91]  92  93  94  95  96  97  98  99  76  NA 124 101 102 103 104 105 106 107
[109] 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
null 
   1 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.