Contents
Marker Point Position Generator
METR4202 -- Lab I -- Due: August 27, 2014 Pick random integer locations from 1 to X/Y/Z in HLU
function PointList=Lab1RandLocations(NumberOfLocations, LegoMatSize)
Define Default System Variables
Enviroment/Lego Mat (x,y,z) = (width, length, height)
DefaultLegoMatSize=[10 6 5]; % Pick SIX (6) Locations DefaultNumberOfLocations=6; % Switch based on number of input arguments switch nargin case 0 LegoMatSize=DefaultLegoMatSize; NumberOfLocations=DefaultNumberOfLocations; case 1 LegoMatSize=DefaultLegoMatSize; otherwise end % Allocate Memory MapGrid=zeros(LegoMatSize(2),LegoMatSize(1)); PointList=zeros(NumberOfLocations,3);
Get Random Positions
Pick X and Y done using randperm of the grid cells as randi might result in the same location being picked more than once
randcells=randperm(LegoMatSize(1)*LegoMatSize(2), NumberOfLocations); % Add to the Map MapGrid(randcells)=1; % Add Planar Locations to Point List (rows are "Y" and columns are "X") [PointList(:,2), PointList(:,1)]=find(MapGrid); % Pick Z Hights Randomly PointList(:,3)=randi(LegoMatSize(3), NumberOfLocations, 1); % Check for & fix shadowing by sorting the PointList: In this way if there % is shadowing in X, then we just sort the hieghts by Z so the highest is % at the furthest Y. PointListSortXY=sortrows(PointList,[1,2]); PointListSortXZ=sortrows(PointList,[1,3]); PointList=[PointListSortXY(:,1:2), PointListSortXZ(:,3)];
Display Positions
Display the Point List
disp(PointList); % Make a graph figure(100+randi(100)); plot(PointList(:,1)-0.5, PointList(:,2)-0.5, 'Marker','o','MarkerFaceColor','red', 'LineStyle', 'none') axis([0.1 LegoMatSize(1) 0.1 LegoMatSize(2)]); set(gca,'XTick',1:LegoMatSize(1)); set(gca,'YTick',1:LegoMatSize(2)); axis equal; grid on; for ii=1:NumberOfLocations text(PointList(ii,1)-0.33, PointList(ii,2)-0.33, strcat('(',num2str(PointList(ii,3)), ')')); end
1 6 2 2 2 3 6 6 5 9 1 1 9 5 5 9 6 5 ans = 1 6 2 2 2 3 6 6 5 9 1 1 9 5 5 9 6 5