Кривая Леви C - Lévy C curve

В математике , то кривая Lévy C является самоподобная фрактальной кривой , которая была впервые описана и чьи дифференцируемость свойства были проанализированы Эрнесто Чезаро в 1906 и Георг Фабер в 1910 году, но теперь носит имя французского математик Поль Леви , который был первым чтобы описать его свойства самоподобия, а также предоставить геометрическую конструкцию, показывающую его как репрезентативную кривую того же класса, что и кривая Коха . Это частный случай кривой удвоения периода, кривой де Рама .

Конструкция L-системы

Первые восемь этапов построения кривой Леви С
Кривая Леви C (из L-системы, после первых 12 этапов)

При использовании системы Линденмайера построение кривой C начинается с прямой линии. Равнобедренный треугольник с углами 45 °, 90 ° и 45 ° построен с использованием этой линии , как его гипотенузы . Затем исходная линия заменяется двумя другими сторонами этого треугольника.

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

На каждом последующем этапе каждый прямой отрезок кривой заменяется двумя другими сторонами прямоугольного равнобедренного треугольника, построенного на нем. После n этапов кривая состоит из 2 n отрезков, каждый из которых меньше исходной в 2 n / 2 раза .

Эту L-систему можно описать следующим образом:

Переменные : F
Константы : + -
Начало : F
Правила : F → + F −− F +

где « F » означает «тянуть вперед», «+» означает «повернуть по часовой стрелке на 45 °», а «-» означает «повернуть против часовой стрелки на 45 °».

Фрактальной кривой , которая является пределом этой «бесконечной» процесс представляет собой кривую Леви С. Он получил свое название из-за сходства с сильно орнаментированной версией буквы «С». Кривая напоминает более мелкие детали дерева Пифагора .

Хаусдорфова кривой C равно 2 (она содержит открытые множества), в то время как граница имеет размерность около 1.9340 [1] .

Вариации

Стандартная кривая C строится с использованием равнобедренных треугольников 45 °. Вариации кривой C можно построить, используя равнобедренные треугольники с углами, отличными от 45 °. Пока угол меньше 60 °, каждая новая линия, вводимая на каждом этапе, будет короче, чем линии, которые они заменяют, поэтому процесс построения стремится к предельной кривой. Углы меньше 45 ° дают фрактал менее плотно "скрученный".

Строительство IFS

Кривая Леви C (из IFS, бесконечные уровни)

Если использовать систему повторяющихся функций (IFS или IFS-метод игры хаоса ), то построение кривой C немного проще. Для этого потребуется набор из двух «правил», а именно: Две точки на плоскости ( трансляторы ), каждая из которых связана с масштабным коэффициентом 1 / 2 . Первое правило - поворот на 45 °, второе - на –45 °. Этот набор будет выполнять итерацию точки [ xy ] от случайного выбора любого из двух правил и использовать параметры, связанные с правилом, для масштабирования / поворота и перемещения точки с помощью функции 2D- преобразования .

Составьте формулы:

от начального набора точек .

Пример реализации кривой Леви C

// Java Sample Implementation of Levy C Curve

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.util.concurrent.ThreadLocalRandom;

public class C_curve extends JPanel {

    public float x, y, len, alpha_angle;
    public int iteration_n;

    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        c_curve(x, y, len, alpha_angle, iteration_n, g2d);
    }

    public void c_curve(double x, double y, double len, double alpha_angle, int iteration_n, Graphics2D g) {
        double fx = x; 
        double fy = y;
        double length = len;
        double alpha = alpha_angle;
        int it_n = iteration_n;
        if (it_n > 0) {
            length = (length / Math.sqrt(2));
            c_curve(fx, fy, length, (alpha + 45), (it_n - 1), g); // Recursive Call
            fx = (fx + (length * Math.cos(Math.toRadians(alpha + 45))));
            fy = (fy + (length * Math.sin(Math.toRadians(alpha + 45))));
            c_curve(fx, fy, length, (alpha - 45), (it_n - 1), g); // Recursive Call
        } else {
            Color[] A = {Color.RED, Color.ORANGE, Color.BLUE, Color.DARK_GRAY};
            g.setColor(A[ThreadLocalRandom.current().nextInt(0, A.length)]); //For Choosing Different Color Values
            g.drawLine((int) fx, (int) fy, (int) (fx + (length * Math.cos(Math.toRadians(alpha)))), (int) (fy + (length * Math.sin(Math.toRadians(alpha)))));
        }
    }

    public static void main(String[] args) {
        C_curve points = new C_curve();
        points.x = 200; // Stating x value
        points.y = 100; // Stating y value
        points.len = 150; // Stating length value
        points.alpha_angle = 90; // Stating angle value
        points.iteration_n = 15; // Stating iteration value

        JFrame frame = new JFrame("Points");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(points);
        frame.setSize(500, 500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

    }
}

Смотрите также

Рекомендации

  • Поль Леви, Плоские или космические кривые и поверхности, состоящие из частей, подобных целому (1938), перепечатано в « Классике фракталов», изд. Джеральда А. Эдгара. (1993) ISBN  издательства Addison-Wesley Publishing 0-201-58701-7 .
  • Э. Чезаро, Fonctions continue sans dérivée , Archiv der Math. und Phys. 10 (1906), стр. 57–63.
  • Г. Фабер, Über stetige Funktionen II , Math Annalen, 69 (1910), стр. 372–443.
  • С. Бейли, Т. Ким, Р.С. Стрихарц, Внутри дракона Леви , American Mathematical Monthly 109 (8) (2002), стр. 689–703