[R] Geometry delaunayn and deldir results, differing results from Octave due to decimal precision?
William Dunlap
wdunlap at tibco.com
Wed Jan 24 20:29:05 CET 2018
All three results give the same collection of triangles. They
don't all agree on whether the points in a triangle are in clockwise
or counterclockwise order. If the orientation matters, it is a simple
matter to reverse the order of points in those that described in
the "wrong" orientation.
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Wed, Jan 24, 2018 at 5:59 AM, Yuen, Kam <k.yuen at fugro.com> wrote:
> The problem:
> I would like to translate the Octave algorithm in griddata.m to R.
> Within the griddata algorithm calls are made to the Delaunay function. For
> the R translation I have found delaunayn within the "geometry" package and
> also the deldir package.
> Both do similar things but give slightly different results depending on
> the input.
> The question is, what is making the results for the R packages different
> from each other?
> And are those differences down to the decimal precision in the latter case
> of using 9 d.p.?
> In the following example I have defined x and y to be small vectors and
> all three sets of results agree (but are in a different order), i.e.
> Octave's delaunay, geometry.delaunayn, and deldir.deldir
>
> Octave
>
> x = [0.9554283 0.4695926 0.0769020 0.3033320 0.3553984
> 0.6051734 0.8661461 0.5511353 0.5214984 0.0061548]
>
> y = [0.851911 0.402087 0.704462 0.687721 0.939775 0.499157
> 0.077145 0.588351 0.454380 0.193425]
>
> tri = delaunay(x,y)
>
> tri =
>
> 2 7 10
>
> 2 9 7
>
> 6 7 1
>
> 6 9 7
>
> 4 2 9
>
> 4 2 10
>
> 8 5 1
>
> 8 6 1
>
> 8 4 5
>
> 8 6 9
>
> 8 4 9
>
> 3 4 10
>
> 3 4 5
>
>
> R With deldir package
> x <- c(0.9554283,0.4695926,0.0769020,0.3033320,0.3553984,0.
> 6051734,0.8661461,0.5511353,0.5214984,0.0061548)
> y <- c(0.851911,0.402087,0.704462,0.687721,0.939775,0.499157,0.
> 077145,0.588351,0.454380,0.193425)
> tri <- deldir(x,y)
> triMat(tri) =
> [,1] [,2] [,3]
> [1,] 1 5 8
> [2,] 1 6 7
> [3,] 1 6 8
> [4,] 2 4 10
> [5,] 2 4 9
> [6,] 2 7 10
> [7,] 2 7 9
> [8,] 3 4 10
> [9,] 3 4 5
> [10,] 4 5 8
> [11,] 4 8 9
> [12,] 6 7 9
> [13,] 6 8 9
>
> R with geometry package
>
> x <- c(0.9554283,0.4695926,0.0769020,0.3033320,0.3553984,0.
> 6051734,0.8661461,0.5511353,0.5214984,0.0061548)
>
> y <- c(0.851911,0.402087,0.704462,0.687721,0.939775,0.499157,0.
> 077145,0.588351,0.454380,0.193425)
>
> library(geometry)
>
> tri <- delaunayn(cbind(x,y))
>
>
>
> tri
>
> [,1] [,2] [,3]
>
> [1,] 2 7 10
>
> [2,] 8 5 1
>
> [3,] 6 7 1
>
> [4,] 6 8 1
>
> [5,] 4 2 10
>
> [6,] 4 3 10
>
> [7,] 4 3 5
>
> [8,] 4 8 5
>
> [9,] 9 6 8
>
> [10,] 9 4 2
>
> [11,] 9 4 8
>
> [12,] 9 2 7
>
> [13,] 9 6 7
>
> As you can see, the results are identical with the exception of ordering.
>
> *However* when I use a slightly larger set of data for input,
> "geometry.delaunayn" and "deldir.deldir" seems to give results that are off
> by one in a lot of instances.
> The input for the Delaunay function has been exported from Octave to 9
> d.p. and then imported into R by using the "foreign" package.
>
> Example data is on the following link. It is a set of variables exported
> from Octave 'x y tri xiflat yiflat tri_list.mat'
> https://pastebin.com/xELkj6r6
>
> the variable tri_list is just the tri_list = search(x,y,tri_deldir,xiflat,yiflat)
> in Octave
>
>
> The command history is a as follows:
> library(deldir)
> library(geometry)
> library(foreign)
> theData <- read.octave('x y tri xiflat yiflat tri_list.mat')
> options(digits = 10)
> x <- unlist(theData[1])
> y <- unlist(theData[3])
> tri_deldir <- triMat(deldir(x,y))
> tri_delaunayn <- delaunayn(x,y)
> tri_delaunayn <- delaunayn(cbind(x,y))
> tri_list_from_deldir <- tsearch(x,y,tri_deldir,xiflat,yiflat)
> xiflat <- unlist(theData[7])
> yiflat <- unlist(theData[9])
> tri_list_from_deldir <- tsearch(x,y,tri_deldir,xiflat,yiflat)
> tri_list_from_delaunayn <- tsearch(x,y,tri_delaunayn,xiflat,yiflat)
>
>
> Kam Yuen
> Software Developer
> T +44 (0)1491 820634| F +44 (0)1491 820599
> k.yuen at fugro.com<mailto:k.yuen at fugro.com> | www.fugro.com<http://www.
> fugro.com/>
> Fugro GB Marine Limited
> Fugro House, Hithercroft Road, Wallingford, Oxfordshire OX10 9RB, UK
> Registration No: 1135456 | VAT No: GB 579 3459 84
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/
> posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list