Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
57
Task/Honeycombs/MATLAB/honeycombs.m
Normal file
57
Task/Honeycombs/MATLAB/honeycombs.m
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
function Honeycombs
|
||||
nRows = 4; % Number of rows
|
||||
nCols = 5; % Number of columns
|
||||
nHexs = nRows*nCols; % Number of hexagons
|
||||
rOuter = 1; % Circumradius
|
||||
startX = 0; % x-coordinate of upper left hexagon
|
||||
startY = 0; % y-coordinate of upper left hexagon
|
||||
delX = rOuter*1.5; % Horizontal distance between hexagons
|
||||
delY = rOuter*sqrt(3); % Vertical distance between hexagons
|
||||
offY = delY/2; % Vertical offset between columns
|
||||
genHexX = rOuter.*cos(2.*pi.*(0:5).'./6); % x-coords of general hexagon
|
||||
genHexY = rOuter.*sin(2.*pi.*(0:5).'./6); % y-coords of general hexagon
|
||||
centX = zeros(1, nHexs); % x-coords of hexagon centers
|
||||
centY = zeros(1, nHexs); % y-coords of hexagon centers
|
||||
for c = 1:nCols
|
||||
idxs = (c-1)*nRows+1:c*nRows; % Indeces of hexagons in that column
|
||||
if mod(c, 2) % Odd numbered column - higher y-values
|
||||
centY(idxs) = startY:-delY:startY-delY*(nRows-1);
|
||||
else % Even numbered column - lower y-values
|
||||
centY(idxs) = startY-offY:-delY:startY-offY-delY*(nRows-1);
|
||||
end
|
||||
centX(idxs) = (startX+(c-1)*delX).*ones(1, nRows);
|
||||
end
|
||||
[MCentX, MGenHexX] = meshgrid(centX, genHexX);
|
||||
[MCentY, MGenHexY] = meshgrid(centY, genHexY);
|
||||
HexX = MCentX+MGenHexX; % x-coords of hexagon vertices
|
||||
HexY = MCentY+MGenHexY; % y-coords of hexagon vertices
|
||||
figure
|
||||
hold on
|
||||
letters = char([65:90 97:122]);
|
||||
randIdxs = randperm(26);
|
||||
letters = [letters(randIdxs) letters(26+randIdxs)];
|
||||
hexH = zeros(1, nHexs);
|
||||
for k = 1:nHexs % Create patches individually
|
||||
hexH(k) = patch(HexX(:, k), HexY(:, k), [1 1 0]);
|
||||
textH = text(centX(k), centY(k), letters(mod(k, length(letters))), ...
|
||||
'HorizontalAlignment', 'center', 'FontSize', 14, ...
|
||||
'FontWeight', 'bold', 'Color', [1 0 0], 'HitTest', 'off');
|
||||
set(hexH(k), 'UserData', textH) % Save to object for easy access
|
||||
end
|
||||
axis equal
|
||||
axis off
|
||||
set(gca, 'UserData', '') % List of clicked patch labels
|
||||
set(hexH, 'ButtonDownFcn', @onClick)
|
||||
end
|
||||
|
||||
function onClick(obj, event)
|
||||
axesH = get(obj, 'Parent');
|
||||
textH = get(obj, 'UserData');
|
||||
set(obj, 'FaceColor', [1 0 1]) % Change color
|
||||
set(textH, 'Color', [0 0 0]) % Change label color
|
||||
set(obj, 'HitTest', 'off') % Ignore future clicks
|
||||
currList = get(axesH, 'UserData'); % Hexs already clicked
|
||||
newList = [currList get(textH, 'String')]; % Update list
|
||||
set(axesH, 'UserData', newList)
|
||||
title(newList)
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue