# How to create bounded diagram plot?

I have set of points:

pts={{1.25, 9.75}, {2.5, 9.75}, {2.5, 9.25}, {4, 9.7}, {4, 9.2}, {4,
8.75}, {4, 8.25}, {5.5, 9.7}, {5.5, 9.1}, {5.5, 8.5}, {5.5,
8.0}, {5.5, 7.5}, {7, 9.8}, {7, 9.2}, {7, 8.75}, {7, 8.1}, {7,
7.6}, {9, 9.6}, {9, 9.1}, {9, 8.75}, {9, 8.2}, {9, 7.75}, {11,
9.8}, {11, 9.2}, {11, 8.75}, {13, 9.25}, {13, 9.72}};
ListPlot[pts]


and a bounding line:

x = {0, 2.5, 5, 10, 15};
y = {10, 8.27, 7, 7.5, 10};
b=Transpose[{x,y}];
ListLinePlot[b]


How to create a bounded diagram plot? When I use:

Needs["ComputationalGeometry"]
BoundedDiagram[b, pts]


I get a lot of errors like:

Part::partw: Part 1 of {} does not exist. >>
Part::partw: Part 1 of {} does not exist. >>
Part::pspec: Part specification {}[[1,2]] is neither a machine-sized integer nor a list of machine-sized integers. >>
Part::pspec: Part specification {}[[1,2]] is neither a machine-sized integer nor a list of machine-sized integers. >>


Which don't really let me understand why it doesn't work.

Voronoi diagram, convex hull or delaunay triangulation works just perfect on these points.

-

I think your choice of boundary polygon is giving BoundedDiagram trouble because it doesn't put each of its vertices in a unique Voronoi cell. I chose a polygon that fit more slackly about your data points and got a nice bounded Voronoi diagram.

Here is a plot showing how your boundary polygon and mine lie in relation to the data points. Your boundary polygon is shown in red.

Needs["ComputationalGeometry"]
pts =
{{1.25, 9.75}, {2.5, 9.75}, {2.5, 9.25}, {4, 9.7}, {4, 9.2}, {4,8.75},
{4, 8.25}, {5.5, 9.7}, {5.5, 9.1}, {5.5, 8.5}, {5.5,8.0},
{5.5, 7.5}, {7, 9.8}, {7, 9.2}, {7, 8.75}, {7, 8.1}, {7,7.6},
{9, 9.6}, {9, 9.1}, {9, 8.75}, {9, 8.2}, {9, 7.75}, {11,9.8},
{11, 9.2}, {11, 8.75}, {13, 9.25}, {13, 9.72}};
tightPts = Transpose[{{0, 2.5, 5, 10, 15}, {10, 8.27, 7, 7.5, 10}}];
slackPts = {{0, 10.5}, {5, 5}, {15, 6}, {16, 11}};
Graphics[{
{PointSize[Medium], Point[pts]},
{FaceForm[None], EdgeForm[Black], Polygon @ slackPts, EdgeForm[Red], Polygon @ tightPts}},
Frame -> True]


Using my choice of boundary polygon, I get the following

bd = BoundedDiagram[slackPts, pts];
Show[DiagramPlot[pts, Sequence @@ bd], PlotRangePadding -> {Automatic, {-5, -5}}]


You can see from my bounded Voronoi diagram that my boundary polygon could be adjusted to fit more tightly and still maintain its vertices in the separate cells numbered 1, 12, 26 and 27. I leave that adjustment, should you want it, to you.

-