CW, LW and Karlsruhe are very heavy.
Manhattan-metric Voronoi diagram(Open 5/Sep/2000 : The 5th Revision Thursday, 03-Jun-2010 22:12:47 JST)
Manhattan-metric Voronoi diagram is drawn by using distance function d(p,p(i))
d(p,p(i))=|x-x(i)|+|y-y(i)|
where (x,y) is the coordinate of p, (x(i),y(i)) is the coordinate of p(i), |a| is a sign of absolute value.
Special case
Manhattan Voronoi diagram for square lattice generators
Manhattan Voronoi diagram for radial generators 1
Manhattan Voronoi diagram for radial generators 2
Manhattan Voronoi diagram for triangular lattice generators
Manhattan Voronoi diagram for hexagonal lattice generators
Algorithm
the concept is very close to that of the ordinary Voronoi diagram
Following algorithm is for the ordinary Voronoi diagram
i=1,...,N-1
j=i+1,...,N
Consider a bisector of p(i) and p(j)
k=1,...,N except for i and j
Consider a bisector of p(i) and p(k)
Calculate the points of intersection of bisector(i,j) and bisector(i,k)
next k
Add the points at x=0 and x=(the width of the screen) of the bisector of i and j into the points of intersections
Sort the points of intersections in terms of x coordinates
k=1,...,the number of intervals of the points of intersections
Let c be a midpoint of the interval of the points of intersection.
Let d be d(c,p(i))
h=1,...,N except for i and j
Let d' be d(c,p(h))
If d'<d then shout (Out!)
next h
If we did not shout, then draw the interval of the points of intersection
next k
next j
next i
but the bisector of Manhattan Voronoi diagram is not line.
it is conbination of horizontal half-line, diagonal line segment and horizontal half-line (type 1) or
vertical half-line, diagonal line segment and vertical half-line(type 2)
(See Okabe et al. Soatial tessellations 2nd ed. Fig. 3.7.2)
this conbination type is decided by the difference of x-coordinate and difference of y-coordinate.
that is, if difference of x-coordinates is larger than the difference of y-coordinates then type 2 and
if difference of y-coordinates is larger than the difference of x-coordinates then type 1
(I don't consider the case that the differences are exactly same because the probability is 0 since generators are made from random variables.)
By the way, I set y=400 x+? instead of the vertical half-line(x=?) of the type-2, sorry.
Java(man.java)
If you have a message, don't hesitate to send it by using
E-mail:Mail Form
or
BBS
Use of Takashi Ohyama's website
English Home of Takashi Ohyama
Japanese Home of Takashi Ohyama