ИМХО, легче заполнять с конца.
Заполнять курсором. Как только он наталкивается на край или уже заполненные поля — поворачивать.
Поворот означает умножение двухмерного шага на матрицу поворота.
От центра критерий поворота муторнее.
В жизни кaждoгo челoвекa бывaют приятные мoменты, кoгдa oн чувствует себя пoлным идиoтoм. Приятнoсть этих мoментoв в пoстижении истины.