How to distribute points uniformly through the grid of multiple hexagons?

17 views (last 30 days)
Hi all, I have the following code to draw hexagonal grid.
Rad3Over2 = sqrt(3) / 2;
[X Y] = meshgrid(-.2:0.2:1.6);
n = size(X,1);
X = Rad3Over2 * X;
Y = Y + repmat([0 0.5],[n,n/2]);
% Plot the hexagonal mesh, including cell borders
[XV YV] = voronoi(X(:),Y(:)); plot(XV,YV,'b-')
axis equal, axis([.2 1.2 .2 1]), zoom on
My question is:
How to distribute uniform number of points into each hexagonal (for example, 4 points into each hexagonal)?
Thanks in advance.
  3 Comments
Image Analyst
Image Analyst on 1 Feb 2020
Original question (in case he changes it again):
How to distribute points uniformly through the grid of multiple hexagons?
Hi all, I have the following code to draw hexagonal grid.
Rad3Over2 = sqrt(3) / 2;
[X Y] = meshgrid(-.2:0.2:1.6);
n = size(X,1);
X = Rad3Over2 * X;
Y = Y + repmat([0 0.5],[n,n/2]);
% Plot the hexagonal mesh, including cell borders
[XV YV] = voronoi(X(:),Y(:)); plot(XV,YV,'b-')
axis equal, axis([.2 1.2 .2 1]), zoom on
My question is:
How to distribute uniform number of points into each hexagonal (for example, 4 points into each hexagonal)?
Thanks in advance.

Sign in to comment.

Accepted Answer

Jan
Jan on 12 Jan 2018
Edited: Jan on 12 Jan 2018
You can do this for each hexagon:
  1. Get the coordinates of the surrounding square (not rectangle) with the side length L.
  2. Choose coordinates randomly using L * rand(1, 2) and reject points, which are outside the hexagon. If the point is inside, store the coordinates.
  3. Proceed with step 2. until you have the wanted number of points.
Two examples for code:
For a constructive method without rejection see John D'Errico excellent instructions: https://www.mathworks.com/matlabcentral/answers/327990-generate-random-coordinates-inside-a-convex-polytope
  4 Comments
Eman S
Eman S on 22 Jan 2018
I wouldn't reject points. As shown in attached picture,in the region (1.2*1) . There are hexagons until(1.1) and halves of hexagons also. The points should distributed through the (1.2*1 region).
Jan
Jan on 22 Jan 2018
Edited: Jan on 22 Jan 2018
@Eman: I do not understand your comment. What is a "1.2*1 region"? I've explained a way to create points in one hexagon. Pick each hexagon and use the suggested method to insert 4 random points. I have no idea how you want to treat the "half" hexagons.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!