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 -*-*-*-*-*-*-*-*-*-*-*