stringtranslate.com

Curva C de Lévy

En matemáticas , la curva C de Lévy es una curva fractal autosimilar que fue descrita por primera vez y cuyas propiedades de diferenciabilidad fueron analizadas por Ernesto Cesàro en 1906 y Georg Faber en 1910, pero que ahora lleva el nombre del matemático francés Paul Lévy , quien fue el primero en describir sus propiedades de autosimilitud , así como en proporcionar una construcción geométrica que la muestra como una curva representativa de la misma clase que la curva de Koch . Es un caso especial de una curva de duplicación de período, una curva de De Rham .

Construcción del sistema L

Primeras ocho etapas de la construcción de una curva Lévy C
Curva C de Lévy (de un sistema en L, después de las primeras 12 etapas)

Si se utiliza un sistema Lindenmayer , la construcción de la curva C comienza con una línea recta. Se construye un triángulo isósceles con ángulos de 45°, 90° y 45° utilizando esta línea como hipotenusa . Luego, la línea original se reemplaza por los otros dos lados de este triángulo.

En la segunda etapa, las dos nuevas líneas forman la base de otro triángulo rectángulo isósceles y se reemplazan por los otros dos lados de su respectivo triángulo. De esta manera, después de dos etapas, la curva toma la apariencia de tres lados de un rectángulo con la misma longitud que la línea original, pero con solo la mitad de ancho.

En cada etapa subsiguiente, cada segmento de línea recta de la curva se reemplaza por los otros dos lados de un triángulo rectángulo isósceles construido sobre él. Después de n etapas, la curva consta de 2 n segmentos de línea, cada uno de los cuales es más pequeño que la línea original por un factor de 2 n /2 .

Este sistema L se puede describir de la siguiente manera:

donde " F " significa "dibujar hacia adelante", "+" significa "girar en el sentido de las agujas del reloj 45°" y "−" significa "girar en el sentido contrario de las agujas del reloj 45°".

La curva fractal que constituye el límite de este proceso "infinito" es la curva C de Lévy. Su nombre se debe a su parecido con una versión muy ornamentada de la letra "C". La curva se asemeja a los detalles más finos del árbol de Pitágoras .

La dimensión de Hausdorff de la curva C es igual a 2 (contiene conjuntos abiertos), mientras que el límite tiene una dimensión de aproximadamente 1,9340 [1].

Variaciones

La curva C estándar se construye utilizando triángulos isósceles de 45°. Se pueden construir variaciones de la curva C utilizando triángulos isósceles con ángulos distintos de 45°. Mientras el ángulo sea menor de 60°, las nuevas líneas introducidas en cada etapa son cada una más corta que las líneas que reemplazan, por lo que el proceso de construcción tiende hacia una curva límite. Los ángulos menores de 45° producen un fractal que está menos "curvado".

Construcción IFS

Curva C de Lévy (de IFS, niveles infinitos)

Si se utiliza un sistema de funciones iteradas (IFS, o en realidad el método IFS del juego del caos ), entonces la construcción de la curva C es un poco más fácil. Necesitará un conjunto de dos "reglas" que son: Dos puntos en un plano (los traductores ), cada uno asociado con un factor de escala de 1/ 2 . La primera regla es una rotación de 45° y la segunda −45°. Este conjunto iterará un punto [ xy ] eligiendo aleatoriamente cualquiera de las dos reglas y usará los parámetros asociados con la regla para escalar/rotar y trasladar el punto usando una función de transformación 2D .

Poner en fórmulas:

desde el conjunto inicial de puntos .

Ejemplo de implementación de la curva C de Levy

// Ejemplo de implementación en Java de la curva C de Levyimportar java.awt.Color ; importar java.awt.Graphics ; importar java.awt.Graphics2D ; importar javax.swing.JFrame ; importar javax.swing.JPanel ; importar java.util.concurrent.ThreadLocalRandom ;      clase pública C_curve extiende JPanel {      público flotante x , y , len , ángulo_alfa ; público int iteración_n ;         public void paint ( Graphics g ) { Graphics2D g2d = ( Graphics2D ) g ; c_curva ( x , y , len , ángulo_alfa , iteración_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 ) ; // Llamada recursiva 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 ) ; // Llamada recursiva } else { Color [ ] A = { Color.ROJO , Color.NARANJA , Color.AZUL , Color.GRIS_OSCURO } ; g.setColor ( A [ ThreadLocalRandom.current ( ) . nextInt ( 0 , A                                                                                                 . length ) ] ); //Para elegir diferentes valores de color 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 ; // Indicando el valor de x points.y = 100 ; // Indicando el valor de y points.len = 150 ; // Indicando el valor de longitud points.alpha_angle = 90 ; // Indicando el valor del ángulo points.iteration_n = 15 ; // Indicando el valor de iteración                               JFrame marco = new JFrame ( " Puntos " ) ; marco.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ; marco.add ( puntos ) ; marco.setSize ( 500 , 500 ) ; marco.setLocationRelativeTo ( null ) ; marco.setVisible ( true ) ;           } }

Véase también

Referencias