Nothing
context("utils_geometry")
x = c(0,1,1,0,0.5,0.2,0.3,0.4,0.2,0.8,0.9)
y = c(0,0,1,1,0.1,0.5,0.8,0.3,0.1,0.4,0.7)
vertx = c(0,1,0)
verty = c(0,0,1)
las <- random_500_points
ctg <- random_2files_250points
test_that("convex hull works", {
expect_equal(lidR:::convex_hull(x,y), data.frame(x = c(1,0,0,1,1), y = c(0,0,1,1,0)))
})
test_that("area_convex_hull works", {
expect_equal(lidR:::area_convex_hull(x,y), 1)
expect_equal(lidR:::area_convex_hull(vertx, verty), 0.5)
})
test_that("area works with a LAS*", {
expect_equal(area(las), 10000, tolerance = 300)
expect_equal(area(ctg), 40000, tolerance = 400)
expect_equal(area(las@header), 1000, tolerance = 100)
})
test_that("area works with a 0 points", {
las <- filter_poi(las, Z > 100)
expect_equal(area(las), 0)
})
test_that("npoints works with a LAS*", {
expect_equal(npoints(las), 500)
expect_equal(npoints(ctg), 500)
expect_equal(npoints(las@header), 500)
})
test_that("density works with a LAS*", {
expect_equal(density(las), 0.05, tolerance = 0.002)
expect_equal(density(ctg), 0.025, tolerance = 0.001)
expect_equal(density(las@header), 0.05, tolerance = 0.001)
})
test_that("tsearch works", {
x <- c(-1, -1, 1)
y <- c(-1, 1, -1)
P <- cbind(x,y)
D <- matrix(c(1L, 2L, 3L), 1, 3)
## Should be in triangle #1
ts <- lidR:::C_tsearch(D, P, cbind(-1,-1), 1L)
expect_equal(ts, 1)
## Should be in triangle #1
ts <- lidR:::C_tsearch(D, P, cbind(1,-1), 1L)
expect_equal(ts, 1)
## Should be in triangle #1
ts <- lidR:::C_tsearch(D, P, cbind(-1,1), 1L)
expect_equal(ts, 1)
## Centroid
ts <- lidR:::C_tsearch(D, P, cbind(-1/3,-1/3), 1L)
expect_equal(ts, 1)
## Should be outside triangle #1, so should return NA
ts <- lidR:::C_tsearch(D, P, cbind(1,1), 1)
expect_true(is.na(ts))
})
test_that("tsearch passes computer precision tests", {
x <- c(6.89, 7.15, 7.03)
y <- c(7.76, 7.75, 8.35)
P <- cbind(x,y)
D <- matrix(c(1L, 2L, 3L), 1, 3)
ts <- lidR:::C_tsearch(D, P, cbind(7.125, 7.875), 1)
expect_equal(ts, 1)
x <- c(278287.03, 278286.89, 278287.15)
y <- c(602248.35, 602247.76, 602247.75)
P <- cbind(x,y)
D = matrix(c(1L,2L,3L), 1,3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1L)
tri = matrix(c(3L,2L,1L), 1,3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1L)
tri = matrix(c(2L,3L,1L), 1,3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1L)
tri = matrix(c(2L,1L,3L), 1,3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1)
tri = matrix(c(3L,1L,2L), 1,3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1L)
tri <- matrix(c(1L, 2L, 3L), 1, 3)
ts <- lidR:::C_tsearch(D, P, cbind(278287.125, 602247.875), 1L)
expect_equal(ts, 1L)
})
test_that("tsearch passes computer precision tests", {
P = structure(c(
488094.617850573, 488094.682850573, 488095.461850573,
5189348.04894701, 5189348.79694701, 5189348.25294701),
.Dim = 3:2, .Dimnames = list(NULL, c("X", "Y")))
X = matrix(c(488094.75, 5189348.75), nrow = 1)
D = matrix(3:1, nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
D = matrix(c(2,3,1), nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
D = matrix(1:3, nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
P = structure(c(
488100.025850573, 488099.663850573, 488099.916850573,
5189337.35594701, 5189337.44894701, 5189336.86194701),
.Dim = 3:2, .Dimnames = list(NULL, c("X", "Y")))
X = structure(c(488099.75, 5189337.25), .Dim = 1:2)
D = matrix(1:3, nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
D = matrix(3:1, nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
D = matrix(c(2,3,1), nrow = 1)
expect_equal(lidR:::tSearch(D,P, X, 1), 1L)
})
test_that("tinfo works", {
x <- c(0, 1, 0)
y <- c(0, 0, 1)
z <- c(1, 0, 0)
X <- cbind(x, y, z)
D <- matrix(c(1, 2, 3, 1), 1, 4)
info = lidR:::C_tinfo(D, X)
# normal vector is (1,1,1)
n = c(info[,1], info[,2], info[,3]) %>% as.numeric
expect_equal(n, c(1,1,1))
# intercept is -1
expect_equal(as.numeric(info[,4]), -1)
# area is sqrt(3)/2
expect_equal(as.numeric(info[,5]), sqrt(3)/2)
# projected area is 0.5
expect_equal(as.numeric(info[,6]), 0.5)
# Max edge size is sqrt(2)
expect_equal(as.numeric(info[,7]), sqrt(2))
D <- matrix(c(1, 2, 3, 1), 1, 4)
x = c(0,0,1)
y = c(0,1,1)
z = c(0,0,1)
X = cbind(x,y,z)
I = as.numeric(lidR:::C_tinfo(D, X))
expect_equal(I[5], sqrt(2)/2)
expect_equal(I[6], 1/2)
x = c(0,0,1)
y = c(0,1,0)
z = c(0,1,1)
X = cbind(x,y,z)
I = as.numeric(lidR:::C_tinfo(D, X))
expect_equal(I[5], sqrt(3)/2)
expect_equal(I[6], 1/2)
x = c(0,0,1)
y = c(0,1,1)
z = c(0,0,2)
X = cbind(x,y,z)
I = as.numeric(lidR:::C_tinfo(D, X))
expect_equal(I[5], sqrt(5)/2)
expect_equal(I[6], 1/2)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.