Алгоритм:
1. Строим наибольший квадрат.
2. Строим меньший квадрат, стороны которого равноудалены от сторон предыдущего.
3. Далее вписываем в него еще один квадрат, сохраняя пропорции, т.е. стороны каждого меньшего квадрата должны быть удалены от большего на меньшее расстояние.
На картинке видно, что расстояние между квадратами, которые находятся "в центре", меньше чем между двумя наибольшими квадратами.
Повторяя эту операцию несколько раз для меньших квадратов, мы получим изображение четырехугольной пирамиды(вид сверху), или тоннеля.
Как создаются вложенные спиральные квадраты
Чтобы получить вложенные спиральные квадраты, мы должны повернуть каждый меньший квадрат на определенный угол по часовой, или против часовой стрелки, таким образом, чтобы меньший квадрат, (а, вернее, его вершины) "соприкасались" со сторонами большего квадрата.
Чтобы не поворачивать квадрат каждый раз, мы можем считать координаты вершин меньшего квадрата по формуле деления отрезка в заданном отношении.
Формулы деления отрезка в данном отношении на плоскостиЕсли известны две точки плоскости A(xa, ya), B(xb, yb), то координаты точки M(xm, ym), которая делит отрезок AB в отношении λ = AM / BM, выражаются формулами:
xm = (xa + λ * xb) / (1 + λ)
ym = (ya + λ * yb) / (1 + λ)
Алгоритм:
1. Строим наибольший квадрат.
2. Считаем координаты вершин нового квадрата, используя формулу деления отрезка в заданном отношении.
3. Строим меньший квадрат.
Повторяя эту операцию несколько раз для меньших квадратов, мы получим изображение спирали.