Кривая Леви C - Lévy C curve
В математике , то кривая Lévy C является самоподобная фрактальной кривой , которая была впервые описана и чьи дифференцируемость свойства были проанализированы Эрнесто Чезаро в 1906 и Георг Фабер в 1910 году, но теперь носит имя французского математик Поль Леви , который был первым чтобы описать его свойства самоподобия, а также предоставить геометрическую конструкцию, показывающую его как репрезентативную кривую того же класса, что и кривая Коха . Это частный случай кривой удвоения периода, кривой де Рама .
Конструкция L-системы
При использовании системы Линденмайера построение кривой 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
Если использовать систему повторяющихся функций (IFS или IFS-метод игры хаоса ), то построение кривой C немного проще. Для этого потребуется набор из двух «правил», а именно: Две точки на плоскости ( трансляторы ), каждая из которых связана с масштабным коэффициентом 1 / √ 2 . Первое правило - поворот на 45 °, второе - на –45 °. Этот набор будет выполнять итерацию точки [ x , y ] от случайного выбора любого из двух правил и использовать параметры, связанные с правилом, для масштабирования / поворота и перемещения точки с помощью функции 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