Serious problem with DelaunayTriangulation package?
- To: mathgroup at yoda.physics.unc.edu
- Subject: Serious problem with DelaunayTriangulation package?
- From: llefton at math.uno.edu
- Date: Wed, 29 Sep 93 10:32:45 CDT
Hello mathgroupers,
I've been using the built in DelaunayTriangulation routine in the
ComputationalGeometry package to generate some finite element meshes.
I recently ran into a disturbing example. Two apparently identical
sets of datapoints yield different behavior from the package. One
set works fine, but the other gives division by zero errors and gets
stuck! I have tried this on both a NeXTstation and an IBM RS6000.
Both machines are running Mathematica Version 2.0
Any help would be appreciated.
----------------------------------------------------------------
| Lew Lefton | Phone: (504) 286-7441 |
| Department of Mathematics | FAX: (504) 286-5516 |
| University of New Orleans | e-mail: llefton at math.uno.edu |
| New Orleans, LA 70148 | (NeXT mail welcome) |
----------------------------------------------------------------
*-*-*-*-*-*-*-*-*-*-*- BEGINNING OF SESSION -*-*-*-*-*-*-*-*-*-
Mathematica 2.0 for NeXT
Copyright 1988-91 Wolfram Research, Inc.
-- NeXT graphics initialized --
(* Load the package *)
In[1]:= <<DiscreteMath`ComputationalGeometry`;
(* Here is the bad dataset *)
In[2]:= badpoints = {{-0.1571348402636773, -3.111111111111111},
{-0.1863389981249825, -2.666666666666666},
{-0.2078698548207746, -2.222222222222221},
{-0.2239516041194042, -1.777777777777777},
{-0.2357022603955158, -1.333333333333333},
{-0.2437490107608923, -0.888888888888888},
{-0.2484519974999766, -0.4444444444444438}, {-0.25, 0},
{-0.2484519974999766, 0.4444444444444451},
{-0.2437490107608923, 0.888888888888889},
{-0.2357022603955158, 1.333333333333334},
{-0.2239516041194042, 1.777777777777778},
{-0.2078698548207745, 2.222222222222223},
{-0.1863389981249824, 2.666666666666667},
{-0.1571348402636772, 3.111111111111112}, {0, -4.},
{0., -3.555555555555555}, {0., -3.111111111111111},
{0., -2.666666666666667}, {0., -2.222222222222222},
{0., -1.777777777777778}, {0., -1.333333333333333},
{0., -0.888888888888889}, {0., -0.4444444444444447},
{0., 0.}, {0., 0.4444444444444447},
{0., 0.888888888888888}, {0., 1.333333333333333},
{0., 1.777777777777778}, {0., 2.222222222222221},
{0., 2.666666666666666}, {0., 3.111111111111111},
{0., 3.555555555555555}, {0., 4.},
{0.1571348402636773, -3.111111111111111},
{0.1863389981249825, -2.666666666666666},
{0.2078698548207746, -2.222222222222221},
{0.2239516041194042, -1.777777777777777},
{0.2357022603955158, -1.333333333333333},
{0.2437490107608923, -0.888888888888888},
{0.2484519974999766, -0.4444444444444438}, {0.25, 0},
{0.2484519974999766, 0.4444444444444451},
{0.2437490107608923, 0.888888888888889},
{0.2357022603955158, 1.333333333333334},
{0.2239516041194042, 1.777777777777778},
{0.2078698548207745, 2.222222222222223},
{0.1863389981249824, 2.666666666666667},
{0.1571348402636772, 3.111111111111112}};
(* Here is the good dataset *)
In[3]:= goodpoints = {{-0.1571348402636773, -3.111111111111111},
{-0.1863389981249825, -2.666666666666666},
{-0.2078698548207746, -2.222222222222221},
{-0.2239516041194042, -1.777777777777777},
{-0.2357022603955158, -1.333333333333333},
{-0.2437490107608923, -0.888888888888888},
{-0.2484519974999766, -0.4444444444444438},
{-0.25, 0},
{-0.2484519974999766, 0.4444444444444451},
{-0.2437490107608923, 0.888888888888889},
{-0.2357022603955158, 1.333333333333334},
{-0.2239516041194042, 1.777777777777778},
{-0.2078698548207745, 2.222222222222223},
{-0.1863389981249824, 2.666666666666667},
{-0.1571348402636772, 3.111111111111112},
{0, -4.},
{0, -3.555555555555555},
{0, -3.111111111111111},
{0, -2.666666666666667},
{0, -2.222222222222222},
{0, -1.777777777777778},
{0, -1.333333333333333},
{0, -0.888888888888889},
{0, -0.4444444444444447},
{0, 0},
{0, 0.4444444444444447},
{0, 0.888888888888888},
{0, 1.333333333333333},
{0, 1.777777777777778},
{0, 2.222222222222221},
{0, 2.666666666666666},
{0, 3.111111111111111},
{0, 3.555555555555555},
{0, 4.},
{0.1571348402636773, -3.111111111111111},
{0.1863389981249825, -2.666666666666666},
{0.2078698548207746, -2.222222222222221},
{0.2239516041194042, -1.777777777777777},
{0.2357022603955158, -1.333333333333333},
{0.2437490107608923, -0.888888888888888},
{0.2484519974999766, -0.4444444444444438},
{0.25, 0},
{0.2484519974999766, 0.4444444444444451},
{0.2437490107608923, 0.888888888888889},
{0.2357022603955158, 1.333333333333334},
{0.2239516041194042, 1.777777777777778},
{0.2078698548207745, 2.222222222222223},
{0.1863389981249824, 2.666666666666667},
{0.1571348402636772, 3.111111111111112}};
(* No apparent differences, even after careful inspection... *)
In[4]:= N[goodpoints - badpoints, 16]
Out[4]= {{0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.},
> {0., 0.}, {0., 0}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0.}, {0., 0.}, {0, 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0., 0.}, {0.,
0.},
> {0., 0.}}
(* The good guy works fine *)
In[5]:= Short[Timing[DelaunayTriangulation[goodpoints]]]
Out[5]//Short= {25.95 Second, {{1, {16, 17, 18, 19, 2}}, <<47>>, {49,
<<1>>}}}
In[6]:= Short[Timing[DelaunayTriangulation[badpoints]]]
General::dbyz: Division by zero.
Infinity::indet: Indeterminate expression 0 ComplexInfinity
encountered.
Infinity::indet:
Indeterminate expression -0.5625 0. ComplexInfinity encountered.
General::dbyz: Division by zero.
Infinity::indet: Indeterminate expression 0 ComplexInfinity
encountered.
General::stop: Further output of Infinity::indet
will be suppressed during this calculation.
General::dbyz: Division by zero.
General::stop: Further output of General::dbyz
will be suppressed during this calculation.
(* After waiting for a long time *)
^C
Interrupt> a
Out[6]= $Aborted
*-*-*-*-*-*-*-*-*-*-*- END OF SESSION -*-*-*-*-*-*-*-*-*-*-*