Altıgen ızgara oluşturma
Açıklama: Altıgen ızgara oluşturma.
Girdiler: xStepSize
-> Izgaranın x yönündeki artış miktarı (y buna bağımlıdır), axesBounds
-> [minX maxX minY maxY]
olarak sınırlar
Çıktılar : X
-> Izgaranın x koordinatları. Y
-> Izgaranın y koordinatları
Örnek:
minX = 100; minY = 250; maxX = 640; maxY = 480; [X,Y] = makeHexGrid(20, [minX maxX minY maxY]); plot(X,Y,'r.') axis([minX-50 maxX+50 minY-50 maxY+50]) axis equal
Not: MATLAB’da meshgrid
komutu ile kare veya dikdörtgen ızgaralar oluşturulabilir.
English description: Creating hexagonal grid within the given bounds and step size on x axis.
Kaynak kod
% makeHexGrid.m: Altıgen ızgara oluşturma % % Girdiler: xStepSize -> Izgaranın x yönündeki artış miktarı (y buna bağımlıdır) % axesBounds -> [minX maxX minY maxY] olarak sınırlar % % Çıktılar : X -> Izgaranın x koordinatları % Y -> Izgaranın y koordinatları % % Örnek: % minX = 100; minY = 250; maxX = 640; maxY = 480; % [X,Y] = makeHexGrid(20, [minX maxX minY maxY]); % plot(X,Y,'r.') % axis([minX-50 maxX+50 minY-50 maxY+50]) % axis equal % function [X,Y] = makeHexGrid(xStepSize, axesBounds) % Eger sadece x artış miktarı verilirse çizim sınırlarını varsayılanlara % atayalım if nargin < 2 axesBounds = [0 0 10 10]; end minX = axesBounds(1); maxX = axesBounds(2); minY = axesBounds(3); maxY = axesBounds(4); X = []; Y = []; % çıktılar % Altıgen ızgara yapacağımız için y eksenindeki artış miktarı x' e bağımlı % olacak ve cos(pi/6) katı olacak yStepSize = xStepSize * cos(pi/6); row = 1; for yVal = minY:yStepSize:maxY isOddRow = mod(row,2); if isOddRow xStart = minX; else % Çift satırlarda x değerleri artış miktarının sin(pi/6), % yani 0.5 katı içerisinden başlar xStart = minX + xStepSize / 2; end xList = xStart:xStepSize:maxX; yList = yVal * ones(size(xList)); % Her x değerine karşılık bir y değeri X = [X; xList(:)]; Y = [Y; yList(:)]; row = row + 1; end