random_point_in_triangle {tigers} | R Documentation |
Random Points in Triangle
Description
Generates random points inside a triangle using Osada et al.'s (2002, Sect. 4.2) method.
Usage
random_point_in_triangle(n, X, rfun1 = runif, rfun2 = runif)
rpit(n, X, rfun1 = runif, rfun2 = runif)
Arguments
n |
an integer giving the number of points to generate. |
X |
a numeric matrix with 3 rows and 2 columns giving the coordinates of the triangle. |
rfun1 |
a function generating random values in [0,1]. By default, the values are generated under a uniform distribution. |
rfun2 |
same as the previous argument (see details). |
Details
By default, the points are uniformly distributed in the triangle.
The Beta
function offers an interesting
alternative to generate points concentrated in a specific part of the
triangle (see examples).
Value
A numeric matrix with n
rows and two columns giving the
coordinates of the points.
Author(s)
Emmanuel Paradis
References
Osada, R., Funkhouser, T., Chazelle, B., and Dobkin, D. (2002) Shape distributions. ACM Transactions on Graphics, 21, 807–832. <doi:10.1145/571647.571648>
Examples
## a random triangle in [0,1]^2:
P <- matrix(runif(6), 3, 2)
## n points uniformly distributed in the triangle P:
n <- 10000
x <- rpit(n, P)
layout(matrix(1:2, 1))
plot(P, type = "n", asp = 1)
polygon(P, col = "yellow", border = NA)
points(x, pch = ".", col = "blue")
## using Beta distributions:
foo <- function(n) rbeta(n, 1, 10)
bar <- function(n) rbeta(n, 1, 1)
y <- rpit(n, P, foo, bar)
plot(P, type = "n", asp = 1)
polygon(P, col = "yellow", border = NA)
points(y, pch = ".", col = "blue")
layout(1)