Кривая Леви C
В математике кривая Леви C представляет собой самоподобную фрактальную кривую , которая была впервые описана и чьи свойства дифференцируемости были проанализированы Эрнесто Чезаро в 1906 году и Георгом Фабером в 1910 году, но теперь носит имя французского математика Поля Леви , который был первым описать ее свойства самоподобия , а также предоставить геометрическую конструкцию, показывающую ее как репрезентативную кривую того же класса, что и кривая Коха . Это частный случай кривой удвоения периода, кривой де Рама .
Конструкция L-системы
[ редактировать ]При использовании системы Линденмайера построение кривой C начинается с прямой линии. треугольник равнобедренный строится Используя эту линию в качестве гипотенузы, с углами 45°, 90° и 45° . Исходная линия затем заменяется двумя другими сторонами этого треугольника.
На втором этапе каждая из двух новых линий образует основу другого прямоугольного равнобедренного треугольника и заменяется двумя другими сторонами соответствующего треугольника. Итак, после двух этапов кривая принимает вид трех сторон прямоугольника той же длины, что и исходная линия, но вдвое меньшей ширины.
На каждом последующем этапе каждый отрезок прямой на кривой заменяется двумя другими сторонами построенного на нем прямоугольного равнобедренного треугольника. После n этапов кривая состоит из 2 н отрезки прямой, каждый из которых меньше исходной линии в 2 раза н /2 .
Эту L-систему можно описать следующим образом:
Переменные : | Ф |
Константы : | + − |
Начинать : | Ф |
Правила : | F → +F−−F+ |
где " F " означает "выдвижение вперед", "+" означает "поворот по часовой стрелке на 45°", а "-" означает "поворот против часовой стрелки на 45°".
Фрактальная кривая , являющаяся пределом этого «бесконечного» процесса, — это кривая Леви С. Свое название он получил из-за сходства с богато украшенной версией буквы «С». Кривая напоминает мелкие детали дерева Пифагора .
Хаусдорфова размерность кривой C равна 2 (она содержит открытые множества), тогда как граница имеет размерность около 1,9340 [1] .
Вариации
[ редактировать ]Стандартная кривая C строится с использованием равнобедренных треугольников под углом 45°. Вариации кривой C можно построить, используя равнобедренные треугольники с углами, отличными от 45 °. Пока угол меньше 60°, новые линии, вводимые на каждом этапе, короче линий, которые они заменяют, поэтому процесс построения стремится к предельной кривой. Углы менее 45 ° создают менее плотно «скрученный» фрактал.
строительство МФС
[ редактировать ]Если использовать систему итерированных функций (IFS или, на самом деле, IFS-метод игры хаоса ), то построение кривой C будет немного проще. Для этого понадобится набор из двух «правил», а именно: Две точки на плоскости ( переводчики ), каждая из которых связана с масштабным коэффициентом 1/ √ 2 . Первое правило — поворот на 45°, второе —45°. Этот набор будет перебирать точку [ x , y ] путем случайного выбора любого из двух правил и использовать параметры, связанные с правилом, для масштабирования/поворота и перемещения точки с помощью функции 2D- преобразования .
Запишем в формулы:
из исходного набора точек .
Пример реализации кривой C Леви
[ редактировать ]// Java Sample Implementation of Levy C Curveimport 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 0-201-58701-7 .
- Э. Чезаро, Непрерывные функции без производной , Archiv der Math. и физ. 10 (1906), стр. 57–63.
- Г. Фабер, О непрерывных функциях II , Math Annals, 69 (1910), стр. 372–443.
- С. Бэйли, Т. Ким, Р. С. Стрихарц, Внутри дракона Леви , American Mathematical Monthly 109 (8) (2002), стр. 689–703.