Perdon por "postear" algo "irrelevante", pero mi hijo pequeño que está estudiando una ingenieria en electronica me dijo: "Vos podes hacer un programa para diagramar un copo de Nieve de Kock" y por supuesto le dije: "NO sé que es eso pero si me lo explicas, claro que lo puedo hacer" y ese fué MI ERROR.
Que es el Copo de nieve de Kock:
	
	
		
			
				
					
						 
					
				
			
			
				
					
						
							 es.wikipedia.org
						
					
					es.wikipedia.org
				
			
		
	
Ya logré determinar los "segmentos"
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Pero NO logro posicionarlos en el plano cartesiano para así poder dibujarlos.
SI alguien NO tiene nada que hacer o si se quiere "divertir un rato", agradezco sus comentarios.
Saludos,
Edgar
P.D.:
Me llama mucho la atención este concepto (aunque AUN NO lo entiendo)
Representación como sistema Lindenmayer
La curva de Koch se puede expresar en el sistema Lindenmayer
Alfabeto : F
Constantes : +, −
Axioma : F++F++F
Reglas de producción:
F → F−F++F−F
			
			Que es el Copo de nieve de Kock:
 
					
				Copo de nieve de Koch - Wikipedia, la enciclopedia libre
Ya logré determinar los "segmentos"
			
				Calcular los Segmentos existentes:
			
		
		
		Sub Calcular_Segmentos
    Dim lcSize As Int = 0
    Dim lcNivelAnte As Int = 0
    '
    For i = 1 To etVeces.Text
        lcSize    = Lista_Copos.Size -1
        For x = 0 To lcSize
            Dim lcCopo As T_Segmento
            lcCopo.Initialize
            lcCopo    = Lista_Copos.Get(x)
            lcNivelAnte    = i-1
            If lcCopo.Nivel = lcNivelAnte Then
                Copo(i, Lista_Copos.Get(x))
            End If
        Next
    Next
    '
    ' Solo se utilizan los segmentos de la ultima Iteraccion
    For i = 0 To Lista_Copos.Size-1
        Dim lcCopo As T_Segmento
        lcCopo.Initialize
        lcCopo    = Lista_Copos.Get(i)
        If lcCopo.Nivel = etVeces.Text Then
            Diagrama.Add(lcCopo)
        End If
    Next
    '
End Sub
Sub Copo (ParIterraccion As Int, ParSegmento As T_Segmento)
    Dim lcLargo    As Long
    Dim Copo1 As T_Segmento
    Dim Copo2 As T_Segmento
    Dim Copo3 As T_Segmento
    Dim Copob1 As T_Segmento
    Dim Copob2 As T_Segmento
    Dim Copob3 As T_Segmento
    '
    lcLargo        = ParSegmento.Largo / 3
    '
    ' Se calcula el primer segmento
    Copo1.Initialize
    Copo1.Nivel        = ParIterraccion
    Copo1.Tipo        = "Linea"
    Copo1.Inicio_X    = 0
    Copo1.Inicio_Y    = 0
    Copo1.Largo        = lcLargo
    Copo1.Final_X    = 0
    Copo1.Final_Y    = 0
    Lista_Copos.Add(Copo1)
    '
    ' Se calcula el segundo segmento
    Copo2.Initialize
    Copo2.Nivel        = ParIterraccion
    Copo2.Tipo        = "Triangulo"
    Copo2.Inicio_X    = 0
    Copo2.Inicio_Y    = 0
    Copo2.Largo        = lcLargo
    Copo2.Final_X    = 0
    Copo2.Final_Y    = 0
    Lista_Copos.Add(Copo2)
    '
    ' Se calcula el tercer segmento
    Copo3.Initialize
    Copo3.Nivel        = ParIterraccion
    Copo3.Tipo        = "Linea"
    Copo3.Inicio_X    = 0
    Copo3.Inicio_Y    = 0
    Copo3.Largo        = lcLargo
    Copo3.Final_X    = 0
    Copo3.Final_Y    = 0
    Lista_Copos.Add(Copo3)
    '
    If ParSegmento.Tipo = "Triangulo" Then
        '
        ' Se procesa el otro segmento del triangulo (lado "B")
        '
        ' Se calcula el primer segmento
        Copob1.Initialize
        Copob1.Nivel    = ParIterraccion
        Copob1.Tipo        = "Linea"
        Copob1.Inicio_X    = 0
        Copob1.Inicio_Y    = 0
        Copob1.Largo    = lcLargo
        Copob1.Final_X    = 0
        Copob1.Final_Y    = 0
        Lista_Copos.Add(Copob1)
        '
        ' Se calcula el segundo segmento
        Copob2.Initialize
        Copob2.Nivel    = ParIterraccion
        Copob2.Tipo        = "Triangulo"
        Copob2.Inicio_X    = 0
        Copob2.Inicio_Y    = 0
        Copob2.Largo    = lcLargo
        Copob2.Final_X    = 0
        Copob2.Final_Y    = 0
        Lista_Copos.Add(Copob2)
        '
        ' Se calcula el tercer segmento
        Copob3.Initialize
        Copob3.Nivel    = ParIterraccion
        Copob3.Tipo        = "Linea"
        Copob3.Inicio_X    = 0
        Copob3.Inicio_Y    = 0
        Copob3.Largo    = lcLargo
        Copob3.Final_X    = 0
        Copob3.Final_Y    = 0
        Lista_Copos.Add(Copob3)
    End If
End SubPero NO logro posicionarlos en el plano cartesiano para así poder dibujarlos.
SI alguien NO tiene nada que hacer o si se quiere "divertir un rato", agradezco sus comentarios.
Saludos,
Edgar
P.D.:
Me llama mucho la atención este concepto (aunque AUN NO lo entiendo)
Representación como sistema Lindenmayer
La curva de Koch se puede expresar en el sistema Lindenmayer
Alfabeto : F
Constantes : +, −
Axioma : F++F++F
Reglas de producción:
F → F−F++F−F
 
				 
 
		 
						
					 
 
		 
 
		 
 
		 
 
		