Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Добавление к программе строки glutReshapeFunc(changeSize); приводит к тому, что треугольник перестаёт совсем отрисовываться.
Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Как создаются вложенные квадраты

Вложенные квадраты

Алгоритм:

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. Строим меньший квадрат.

Повторяя эту операцию несколько раз для меньших квадратов, мы получим изображение спирали.