Вы хотите разместить свои точки на единичной окружности, а затем масштабировать, если хотите.
Учитывая количество вершин> = 3, угол между каждой вершиной равен 360 / (количество вершин)
например, для 5 вершин каждая вершина должна находиться на расстоянии 72 градуса.
Теперь, с начальным углом 0 градусов, для каждой вершины ваша x-координата является косинусом вашего начального угла,и ваша координата Y является синусом вашего начального угла.После каждой вершины увеличивайте начальный угол на вычисленный выше угол.
Вот код Matlab, который демонстрирует то, что я говорю для многоугольника, содержащего 13 вершин:
num_verts = 13;
angle = 360/num_verts;
vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
for ii=1:num_verts
vertices(ii,1) = cosd(angle*ii);
vertices(ii,2) = sind(angle*ii);
end
vertices(end,:) = vertices(1,:);
figure;
plot(vertices(:,1),vertices(:,2))
axis equal;
Ирезультирующий многоугольник: 
Если вы хотите ввести некоторую случайность в свои полигоны, вы можете повернуть начальный угол на некоторую случайную величину или умножить свои окончательные координаты на некоторую случайную величину.
См. Например, здесь я создал пятиугольник, повернул его и масштабировал.
num_verts = 5;
angle = 360/num_verts;
vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
rand_angle_shift = 360*rand();
for ii=1:num_verts
vertices(ii,1) = cosd(angle*ii + rand_angle_shift);
vertices(ii,2) = sind(angle*ii + rand_angle_shift);
end
vertices(end,:) = vertices(1,:);
vertices = vertices * 20;
figure;
plot(vertices(:,1),vertices(:,2))
axis equal;

Вы можетеумножьте каждую вершину на случайную величину, чтобы получить новый причудливый (но действительный) многоугольник:
num_verts = 6;
angle = 360/num_verts;
vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
rand_angle_shift = 360*rand();
for ii=1:num_verts
vertices(ii,1) = cosd(angle*ii + rand_angle_shift);
vertices(ii,2) = sind(angle*ii + rand_angle_shift);
end
vertices = vertices .* rand(num_verts+1,2);
vertices(end,:) = vertices(1,:);
figure;
plot(vertices(:,1),vertices(:,2))
axis equal;
