Generating the Ulam Spiral

This short spiral(n) function is supposed to generate a number spiral centered at one. For the most part, I understand the code but I can't seem to grasp why the polynomial m^2-m+1 is used.
function S = spiral(n)
%SPIRAL SPIRAL(n) is an n-by-n matrix with elements
% 1:n^2 arranged in a rectangular spiral pattern.
S = [];
for m = 1:n
S = rot90(S,2);
S(m,m) = 0;
p = m^2-m+1;
v = (m-1:-1:0);
S(:,m) = p-v';
S(m,:) = p+v;
end
if mod(n,2)==1
S = rot90(S,2);
end
Any ideas?

 Risposta accettata

Prince
Prince il 30 Apr 2012
Figured it out... the quadratic designates the values along the main diagonal.
For any future searchers

Più risposte (0)

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by