Как нарисовать снежинку Коха, фото-схемы, как выглядит снежинка Коха? Программы на Pascal (Паскаль): снежинка и кривая Коха, фракталы Снежинка коха построение

Кривая Коха - фрактальная кривая, описанная в 1904 году шведским математиком Хельге фон Кохом. Три копии кривой Коха, построенные (остриями наружу) на сторонах правильного треугольника, образуют замкнутую кривую, называемую снежинкой Коха.

У меня порой бывают заскоки, когда хочется какую-то мат. задачку запрограммировать. На этот раз решил с фракталами повозиться. А именно со снежинкой Коха.

Снежинка Коха

Этот фрактал - один из первых исследованных учёными. Он получается из трёх копий кривой Коха, которая впервые появилась в статье шведского математика Хельге фон Коха в 1904 году. Эта кривая была придумана как пример непрерывной линии, к которой нельзя провести касательную ни в одной точке.

Основные свойства кривой Коха:

  • Она непрерывна, но нигде не дифференцируема.
  • Имеет бесконечную длину. Пусть длина исходного отрезка равна 1. На каждом шаге построения мы заменяем каждый из составляющих линию отрезков на ломаную, которая в 4/3 раза длиннее. Значит, и длина всей ломаной на каждом шаге умножается на 4/3: длина линии с номером n равна (4/3)n–1. Поэтому предельной линии ничего не остается, кроме как быть бесконечно длинной.
  • Снежинка Коха ограничивает конечную площадь. И это при том, что ее периметр бесконечен. Это свойство может показаться парадоксальным, но оно очевидно - снежинка полностью помещается в круг, поэтому ее площадь заведомо ограничена.
  • Немного математики

    Довольно интересно иногда вспомнить простейшие мат. преобразования (: В данном случае необходимо было освежить знания о векторах и трансформации точек в плоскости.

    В частности, как повернуть точку относительно другой точки:

    Ну и необходимо знать, как найти точку на отрезке, отдалённую на какое-то расстояние от точки, зная это расстояние и координаты точек. Методов так-то много. Можно найти координаты прямой, содержащую точки эти, а потом подставлять в уравнение. Можно вычислить координаты, используя вектора.

    Выглядит как-то так.

    Эта фигура - один из первых исследованных учеными фракталов. Она получается из трех копий кривой Коха , которая впервые появилась в статье шведского математика Хельге фон Коха в 1904 году. Эта кривая была придумана как пример непрерывной линии, к которой нельзя провести касательную ни в одной точке. Линии с таким свойством были известны и раньше (Карл Вейерштрасс построил свой пример еще в 1872 году), но кривая Коха замечательна простотой своей конструкции. Не случайно его статья называется «О непрерывной кривой без касательных, которая возникает из элементарной геометрии».

    Рисунок и анимация отлично показывают, как по шагам строится кривая Коха. Первая итерация - просто начальный отрезок. Потом он делится на три равные части, центральная достраивается до правильного треугольника и затем выкидывается. Получается вторая итерация - ломаная линия, состоящая из четырех отрезков. К каждому из них применяется такая же операция, и получается четвертый шаг построения. Продолжая в том же духе, можно получать всё новые и новые линии (все они будут ломаными). А то, что получится в пределе (это уже будет воображаемый объект), и называется кривой Коха.

    Основные свойства кривой Коха

    1. Она непрерывна, но нигде не дифференцируема. Грубо говоря, именно для этого она и была придумана - как пример такого рода математических «уродцев».

    2. Имеет бесконечную длину. Пусть длина исходного отрезка равна 1. На каждом шаге построения мы заменяем каждый из составляющих линию отрезков на ломаную, которая в 4/3 раза длиннее. Значит, и длина всей ломаной на каждом шаге умножается на 4/3: длина линии с номером n равна (4/3) n –1 . Поэтому предельной линии ничего не остается, кроме как быть бесконечно длинной.

    3. Снежинка Коха ограничивает конечную площадь. И это при том, что ее периметр бесконечен. Это свойство может показаться парадоксальным, но оно очевидно - снежинка полностью помещается в круг, поэтому ее площадь заведомо ограничена. Площадь можно посчитать, и для этого даже не нужно особых знаний - формулы площади треугольника и суммы геометрической прогрессии проходят в школе. Для интересующихся вычисление приведено ниже мелким шрифтом.

    Пусть сторона исходного правильного треугольника равна a . Тогда его площадь . Сначала сторона равна 1, а площадь: . Что происходит при увеличении итерации? Можно считать, что к уже имеющемуся многоугольнику пристраиваются маленькие равносторонние треугольнички. В первый раз их всего 3, а каждый следующий раз их в 4 раза больше чем было в предыдущий. То есть на n -м шаге будет достроено T n = 3 · 4 n –1 треугольничков. Длина стороны каждого из них составляет треть от стороны треугольника, достроенного на предыдущем шаге. Значит, она равна (1/3) n . Площади пропорциональны квадратам сторон, поэтому площадь каждого треугольничка равна . При больших значениях n это, кстати, очень мало. Суммарный вклад этих треугольничков в площадь снежинки равен T n · S n = 3/4 · (4/9) n · S 0 . Поэтому после n -го шага площадь фигуры будет равна сумме S 0 + T 1 · S 1 + T 2 · S 2 + ... +T n · S n = . Снежинка получается после бесконечного числа шагов, что соответствует n → ∞. Получается бесконечная сумма, но это сумма убывающей геометрической прогрессии, для нее есть формула: . Площадь снежинки равна .

    4. Фрактальная размерность равна log4/log3 = log 3 4 ≈ 1,261859... . Аккуратное вычисление потребует немалых усилий и подробных разъяснений, поэтому здесь приведена, скорее, иллюстрация определения фрактальной размерности. Из формулы степенной зависимости N (δ ) ~ (1/δ ) D , где N - число пересекающихся квадратиков, δ - их размер, а D - размерность, получаем, что D = log 1/ δ N . Это равенство верно с точностью до прибавления константы (одной и той же для всех δ ). На рисунках изображена пятая итерация построения кривой Коха, зеленым закрашены квадратики сетки, которые с ней пересекаются. Длина исходного отрезка равна 1, поэтому на верхнем рисунке длина стороны квадратиков равна 1/9. Закрашено 12 квадратиков, log 9 12 ≈ 1,130929... . Пока не очень похоже на 1,261859... . Смотрим дальше. На среднем рисунке квадратики в два раза меньше, их размеры 1/18, закрашено 30. log 18 30 ≈ 1,176733... . Уже лучше. Внизу квадратики еще вдвое меньше, закрашено уже 72 штуки. log 72 30 ≈ 1,193426... . Еще ближе. Дальше нужно увеличивать номер итерации и одновременно уменьшать квадратики, тогда «эмпирическое» значение размерности кривой Коха будет неуклонно приближаться к log 3 4, а в пределе и вовсе совпадет.

    Три копии кривой Коха, построенные (остриями наружу) на сторонах правильного треугольника , образуют замкнутую кривую бесконечной длины, называемую снежинкой Коха .

    Эта фигура — один из первых исследованных учеными фракталов. Она получается из трех копий кривой Коха , которая впервые появилась в статье шведского математика Хельге фон Коха в 1904 году. Эта кривая была придумана как пример непрерывной линии, к которой нельзя провести касательную ни в одной точке. Линии с таким свойством были известны и раньше (Карл Вейерштрасс построил свой пример еще в 1872 году), но кривая Коха замечательна простотой своей конструкции. Не случайно его статья называется «О непрерывной кривой без касательных, которая возникает из элементарной геометрии».

    Рисунок и анимация отлично показывают, как по шагам строится кривая Коха. Первая итерация — просто начальный отрезок. Потом он делится на три равные части, центральная достраивается до правильного треугольника и затем выкидывается. Получается вторая итерация — ломаная линия, состоящая из четырех отрезков. К каждому из них применяется такая же операция, и получается четвертый шаг построения. Продолжая в том же духе, можно получать всё новые и новые линии (все они будут ломаными). А то, что получится в пределе (это уже будет воображаемый объект), и называется кривой Коха.

    Основные свойства кривой Коха

    1. Она непрерывна, но нигде не дифференцируема. Грубо говоря, именно для этого она и была придумана — как пример такого рода математических «уродцев».

    2. Имеет бесконечную длину. Пусть длина исходного отрезка равна 1. На каждом шаге построения мы заменяем каждый из составляющих линию отрезков на ломаную, которая в 4/3 раза длиннее. Значит, и длина всей ломаной на каждом шаге умножается на 4/3: длина линии с номером n равна (4/3) n -1 . Поэтому предельной линии ничего не остается, кроме как быть бесконечно длинной.

    3. Снежинка Коха ограничивает конечную площадь. И это при том, что ее периметр бесконечен. Это свойство может показаться парадоксальным, но оно очевидно — снежинка полностью помещается в круг, поэтому ее площадь заведомо ограничена. Площадь можно посчитать, и для этого даже не нужно особых знаний — формулы площади треугольника и суммы геометрической прогрессии проходят в школе. Для интересующихся вычисление приведено ниже мелким шрифтом.

    Пусть сторона исходного правильного треугольника равна a . Тогда его площадь . Сначала сторона равна 1, а площадь: . Что происходит при увеличении итерации? Можно считать, что к уже имеющемуся многоугольнику пристраиваются маленькие равносторонние треугольнички. В первый раз их всего 3, а каждый следующий раз их в 4 раза больше чем было в предыдущий. То есть на n -м шаге будет достроено T n = 3 · 4 n -1 треугольничков. Длина стороны каждого из них составляет треть от стороны треугольника, достроенного на предыдущем шаге. Значит, она равна (1/3) n . Площади пропорциональны квадратам сторон, поэтому площадь каждого треугольничка равна . При больших значениях n это, кстати, очень мало. Суммарный вклад этих треугольничков в площадь снежинки равен T n · S n = 3/4 · (4/9) n · S 0 . Поэтому после n -го шага площадь фигуры будет равна сумме S 0 + T 1 · S 1 + T 2 · S 2 + ... +T n · S n = . Снежинка получается после бесконечного числа шагов, что соответствует n → ∞. Получается бесконечная сумма, но это сумма убывающей геометрической прогрессии, для нее есть формула: . Площадь снежинки равна .

    4. Фрактальная размерность равна log4/log3 = log 3 4 ≈ 1,261859... . Аккуратное вычисление потребует немалых усилий и подробных разъяснений, поэтому здесь приведена, скорее, иллюстрация определения фрактальной размерности. Из формулы степенной зависимости N (δ ) ~ (1/δ ) D , где N — число пересекающихся квадратиков, δ — их размер, а D — размерность, получаем, что D = log 1/ δ N . Это равенство верно с точностью до прибавления константы (одной и той же для всех δ ). На рисунках изображена пятая итерация построения кривой Коха, зеленым закрашены квадратики сетки, которые с ней пересекаются. Длина исходного отрезка равна 1, поэтому на верхнем рисунке длина стороны квадратиков равна 1/9. Закрашено 12 квадратиков, log 9 12 ≈ 1,130929... . Пока не очень похоже на 1,261859... . Смотрим дальше. На среднем рисунке квадратики в два раза меньше, их размеры 1/18, закрашено 30. log 18 30 ≈ 1,176733... . Уже лучше. Внизу квадратики еще вдвое меньше, закрашено уже 72 штуки. log 72 30 ≈ 1,193426... . Еще ближе. Дальше нужно увеличивать номер итерации и одновременно уменьшать квадратики, тогда «эмпирическое» значение размерности кривой Коха будет неуклонно приближаться к log 3 4, а в пределе и вовсе совпадет.

    Варианты

    Снежинка Коха «наоборот» получается, если строить кривые Коха внутрь исходного равностороннего треугольника.

    Линии Чезаро. Вместо равносторонних треугольников используются равнобедренные с углом при основании от 60° до 90°. На рисунке угол равен 88°.

    Квадратный вариант. Тут достраиваются квадраты.





    Снежинка Коха

    canvas {
    border: 1px dashed black;
    }

    var cos = 0.5,
    sin = Math.sqrt(3) / 2,
    deg = Math.PI / 180;
    canv, ctx;

    function rebro(n, len) {
    ctx.save(); // Сохраняем текущую трансформацию
    if (n == 0) { // Нерекурсивный случай - отрисовываем линию
    ctx.lineTo(len, 0);
    }
    else {
    ctx.scale(1 / 3, 1 / 3); // Уменьшаем масштаб в 3 раза
    rebro(n-1, len); //RECUURSION на ребре
    ctx.rotate(60 * deg);
    rebro(n-1, len);
    ctx.rotate(-120 * deg);
    rebro(n-1, len);
    ctx.rotate(60 * deg);
    rebro(n-1, len);
    }
    ctx.restore(); // Восстанавливаем трансформацию
    ctx.translate(len, 0); // переходим в конец ребра
    }

    function drawKochSnowflake(x, y, len, n) {
    x = x - len / 2;
    y = y + len / 2 * Math.sqrt(3)/3;
    ctx.save();
    ctx.beginPath();
    ctx.translate(x, y);
    ctx.moveTo(0, 0);
    rebro(n, len); ctx.rotate(-120 * deg); //RECUUUURSION уже треугольник
    rebro(n, len); ctx.rotate(-120 * deg);
    rebro(n, len); ctx.closePath();
    ctx.strokeStyle = "#000";
    ctx.stroke();
    ctx.restore();
    }

    function clearcanvas(){ //чистим канвас
    ctx.save();
    ctx.beginPath();

    // Use the identity matrix while clearing the canvas
    ctx.setTransform(1, 0, 0, 1, 0, 0);
    ctx.clearRect(0, 0, canvas1.width, canvas1.height);

    // Restore the transform
    ctx.restore();
    }

    function run() {
    canv = document.getElementById("canvas1");
    ctx = canv.getContext("2d");
    var numberiter = document.getElementById("qty").value;
    drawKochSnowflake(canv.width/2, canv.height/2, 380, numberiter);

    Ctx.stroke(); //отрисовка
    }




    Снежинка Коха - пример









    Снежинка Коха

    В начале ХХ века математики искали такие кривые, которые ни в одной точке не имеют касательной. Это означало, что кривая резко меняет свое направление, и притом с колоссально большой скоростью (производная равна бесконечности). Поиски данных кривых были вызваны не просто праздным интересом математиков. Дело в том, что в начале ХХ века очень бурно развивалась квантовая механика. Исследователь М.Броун зарисовал траекторию движения взвешенных частиц в воде и объяснил это явление так: беспорядочно движущиеся атомы жидкости ударяются о взвешенные частицы и тем самым приводят их в движение. После такого объяснения броуновского движения перед учеными встала задача найти такую кривую, которая бы наилучшим образом аппроксимировала движение броуновских частиц. Для этого кривая должна была отвечать следующим свойствам: не иметь касательной ни в одной точке. Математик Кох предложил одну такую кривую. Мы не будем вдаваться в объяснения правила ее построения, а просто приведем ее изображение, из которого все станет ясно (рис.1.1.1).

    Рис 1.1.1. Снежинка Коха.

    Одно важное свойство, которым обладает граница снежинки Коха --- ее бесконечная длина. Это может показаться удивительным, потому что мы привыкли иметь дело с кривыми из курса математического анализа. Обычно гладкие или хотя бы кусочно-гладкие кривые всегда имеют конечную длину (в чем можно убедиться интегрированием). Мандельброт в этой связи опубликовал ряд увлекательных работ, в которых исследуется вопрос об измерении длины береговой линии Великобритании. В качестве модели он

    Рис. 1.1.2. Построение снежинки Коха.


    использовал фрактальную кривую, напоминающую границу снежинки за тем исключением, что в нее введен элемент случайности, учитывающий случайность в природе. В результате оказалось, что кривая, описывающая береговую линию, имеет бесконечную длину.

    Салфетка и ковёр Серпинского

    Еще один пример простого самоподобного фрактала --- салфетка Серпинского (рис. 1.2.1), придуманный польским математиком Вацлавом Серпинским в 1915 году. Сам термин салфетка принадлежит Мандельброту. В способе построения, следующем ниже, мы начинаем с некоторой области и последовательно выбрасываем внутренние подобласти. Позднее мы рассмотрим и другие способы, в частности с использованием L-систем, а также на основе итерированных функций.

    Рис 1.2.1. Салфетка Серпинского

    Пусть начальное множество S 0 --- равносторонний треугольник вместе с областью, которую он замыкает. Разобьем S 0 на четыре меньшие треугольные области, соединив отрезками середины сторон исходного треугольника. Удалим внутренность маленькой центральной треугольной области. Назовем оставшееся множество S 1 (рис. 1.2.2). Затем повторим процесс для каждого из трех оставшихся маленьких треугольников и получим следующее приближение S 2 . Продолжая таким образом, получим последовательность вложенных множеств S n , чье пересечение образует салфетка S.

    Рис. 1.2.2. Построение салфетки Серпинского


    Очевидно, что суммарная площадь частей, выкинутых при построении, в точности равна площади исходного треугольника. На первом шаге мы выбросили ј часть площади. На следующем шаге мы выбросили три треугольника, причем площадь каждого равна ј 2 площади исходного. Рассуждая таким образом, мы убеждаемся, что полная доля выкинутой площади составила:

    1/4 + 3 * (1/4 2) + 3 2 * (1/4 3) + … + 3 n-1 * (1/4 n) + … .

    Эта сумма равна. Следовательно, мы можем утверждать, что оставшееся множество S, то есть салфетка, имеет площадь меры нуль. Это выделяет множество S в разряд «совершенного», в том смысле, что оно разбивает свое дополнение на бесконечное число треугольных областей, обладая при этом нулевой толщиной.

    Ковер Серпинского считается еще одной моделью фрактала. Строится он следующим образом: берется квадрат, делится на девять квадратов, вырезается центральный квадрат. Затем с каждым из восьми оставшихся квадратов проделывается подобная процедура. И так до бесконечности. В результате вместо целого квадрата мы получаем ковер со своеобразным симметричным рисунком. Впервые данную модель предложил математик Серпинский, в честь которого он и получил свое название. Пример ковра Серпинского можно увидеть на рис. 1.2.3.

    Граница снежинки, придуманной Гельгом фон Кохом в 1904 году (рис. 2.2), описывается кривой, составленной из трех одинаковых фракталов размерности . Каждая треть снежинки строится итеративно, начиная с одной из сторон равностороннего треугольника. Пусть - начальный отрезок. Уберем среднюю треть и добавим два новых отрезка такой же длины, как показано на рис. 2.3. Назовем полученное множество . Повторим данную процедуру многократно, на каждом шаге заменяя среднюю треть двумя новыми отрезками. Обозначим через фигуру, получившуюся после n-го шага.

    Рис. 2.2. Снежинка Коха

    Интуитивно ясно, что последовательность кривых сходится к некоторой предельной кривой К. Мы проведем строгое математическое исследование сходимости таких последовательностей кривых и других множеств в п. 3.5 и в прил. А.3. Пока что предположим, что кривая К существует, и рассмотрим некоторые ее свойства.

    Рис. 2.3. а) , б) , в) , г)

    Если взять копию К, уменьшенную в три раза то все множество К можно составить из таких копий. Следовательно, отношение самоподобия (2.1) выполняется при указанных N и , а размерность фрактала будет:

    Еще одно важное свойство, которым обладает граница снежинки Коха - ее бесконечная длина (см. теорему 2.1.1). Это может показаться удивительным читателю, привыкшему иметь дело с кривыми из курса математического анализа. Обычно гладкие или хотя бы кусочно-гладкие, они всегда имеют конечную длину (в чем можно убедиться интегрированием). Мандельброт в этой связи опубликовал ряд увлекательных работ, в которых исследуется вопрос об измерения длины береговой линии Великобритании. В качестве модели он использовал фрактальную кривую, напоминающую границу снежинки за тем исключением, что в нее введен элемент случайности, учитывающий случайность в природе. В результате оказалось, что кривая, описывающая береговую линию, имеет бесконечную длину.

    Loading...Loading...