MATLAB Answers


Why does the DELAUNAY function in MATLAB 7.0 (R14) produce an error when passed colinear points?

When I specify the following colinear points on the xy-plane:
x = [5 5 5 5 5]
y = 1:5
then try to compute the Delaunay triangulation:
tri = delaunay(x,y)
I receive the following error message:
??? qhull input error: input is less than 3-dimensional since it has the same x coordinate
While executing: | qhull d Qt Qbb Qc
Options selected for Qhull 2003.1 2003/12/30:
delaunay Qtriangulate Qbbound-last Qcoplanar-keep _pre-merge
_zero-centrum Pgood Qinterior-keep _max-width 4 Error-roundoff 6.9e-015
_one-merge 4.9e-014 Visible-distance 1.4e-014 U-coplanar-distance 1.4e-014
Width-outside 2.8e-014 _wide-facet 8.3e-014
Error in ==> delaunayn at 81
t = qhullmx(x', 'd ', opt);
Error in ==> delaunay at 49
tri = delaunayn([x(:) y(:)]);


No tags entered yet.




1 Answer

Answer by MathWorks Support Team on 27 Jun 2009
 Accepted Answer

The DELAUNAY function in MATLAB is based on Qhull. This error message is generated by the Qhull routine. For information about Qhull, see
To avoid this error, you can joggle the data by specifying the 'QJ' option to the DELAUNAY function.
tri = delaunay(x,y,{'QJ'})
For information about Qhull options, see the following URL:
For information about the 'QJ' options, see:
Note that the above command produces the following warning:
Warning: qhull precision warning:
The initial hull is narrow (cosine of min. angle is 1.0000000000000000).
A coplanar point may lead to a wide facet. Options 'QbB' (scale to unit box)
or 'Qbb' (scale last coordinate) may remove this warning. Use 'Pp' to skip
this warning. See 'Limitations' in qh-impre.htm.
As this warning indicates, you can skip this message using the command:
tri = delaunay(x,y,{'QJ','Pp'})