clear all;close all;pointsToPlace = 30 ; % # of random coordinates we need to place
% Preallocate points
x = zeros(1, pointsToPlace);y = zeros(1, pointsToPlace);loopCounter = 1;maxIterations = 200000; % Number of tries before giving up.
numberPlaced = 0; % No points placed yet.
while numberPlaced < pointsToPlace && loopCounter < maxIterations % Get new coordinate
xProposed = round((10 + (50-1)*rand()),0); %% random X- coordinates
yProposed = round((10 + (50-1)*rand()),0); %% random Y- coordinates
if loopCounter == 1 % First one automatically gets added of course.
numberPlaced = 1; x(numberPlaced) = xProposed; y(numberPlaced) = yProposed; else % Compute distance to all prior coordinates.
distances = sqrt((xProposed-x(1:numberPlaced)).^2 +(yProposed-y(1:numberPlaced)).^2); % If less than 20, add it
if min(distances > 8) numberPlaced = numberPlaced + 1; x(numberPlaced) = xProposed; y(numberPlaced) = yProposed; end end loopCounter = loopCounter + 1;end
above code (not my code) generates coordinates at equal distances, in my case distances should vary
Best Answer