in reply to Re^3: Better maps with Math::Geometry::Voronoi, and a Challenge for Math Monks
in thread Better maps with Math::Geometry::Voronoi, and a Challenge for Math Monks

BrowserUk:

Sorry, I should've been more clear. I wasn't referring to the vertices, but the input points to the algorithm. So the diagonal line going through two of the points are the bisector for the other two corners. I put this case into the algorithm (just a few minutes ago):

my @points = ( [0,0], [2, 0], [0, 2], [2, 2] );

Yields the following lines:

[ [1, 0, 1, 0, 1], # X=1 for points 0, 1 [0, 1, 1, 0, 2], # Y=1 for points 0, 2 [0, 1, 1, 1, 3], # Y=1 for points 1, 3 [1, 1, 2, 0, 3], # X+Y=2 for points 0, 3 [1, 0, 1, 2, 3], # X=1 for points 2, 3 ]

That fourth entry is the diagonal I was talking about. It's clearly the bisector for points 0 and 3, but since it intersects at the same point as the first two, it's irrelevant. Looking at the edge list:

[ [3, 1, 0], # Edge from (1,1) to (1,1) [1, -1, 1], [4, -1, 1], [2, 0, -1], [0, 0, -1] ]

Other than the first edge, the rest are as you'd expect to see. I'm suspecting some odd comparison (or roundoff) in the C code to be generating that 0-length segment.

Just for completeness, here's the list of vertices:

[ [1, 1], [1, 1] ]

Looking at the results, I'm struck by a couple items:

...roboticus

Update: I just tried the cross that you suggested, and the data showed *absolutely no* anomalies....odd!

Update: Fixed HTML (missed closer for UL).

Replies are listed 'Best First'.
Re^5: Better maps with Math::Geometry::Voronoi, and a Challenge for Math Monks
by BrowserUk (Patriarch) on Jul 03, 2008 at 23:52 UTC
    I put this case into the algorithm...

    Hm. What do you mean by "put it into the algorithm"?

    Four points (o) in a square, gives six bisectors (.), but just four normals(n). (Four pairs of coincident normals.) But they produce just a single vertex (X) ('scuse the crudity):

    +-----------------------------------------------------+ | n n n | | n n n | | n n n | | n n n | | o.......................on | | . .n n .n. | | . .n n .n . | | . .n n .n . | | . .n n .n . | | . . n .n . | | nnnnnnnnnnn.nnnnnnnnnn Xnnnnnnnnnnn.nnnnnnnnnnnnnnnn| | . . n .n . | | . .n n .n . | | . .n n .n . | | . .n n .n . | | . .n n .n. | | o.......................o | | n n n | | n n n | | n n n | +-----------------------------------------------------+

    And you can't form any polygons from a single vertex!

    Unless you are using the boundaries of the coordinate space to form the missing edges of polygons?

    But if that was the case in Sam's problem, his boundary polygons would just always be a rectangle coincident with the boundaries of the coordinate space.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.