Publicacion Apk Error Android consola

Si estas por publicar una APP y te manda el siguiente error:

Subiste un APK con una firma no válida (obtén más información sobre las firmas). Error de apksigner: ERROR: JAR_SIG_NO_SIGNATURES: No JAR signatures

 

Regresa a Android Studio y genera la app con APP Bundle y no la hagas como APK:

 

 

Con esto tu App quedara lista.

 

 

 

Ecuaciones Parametricas VB.net

En matemáticas, un sistema de ecuaciones paramétricas permite representar una curva o

superficie en el plano o en el espacio, mediante valores que recorren un intervalo de

números reales, mediante una variable, llamada parámetro, considerando cada

coordenada de un punto como una función dependiente del parámetro.

En el uso estándar del sistema de coordenadas, una o dos variables (dependiendo de si se

utilizan dos o tres dimensiones respectivamente) son consideradas como variables

independientes, mientras que la restante es la variable dependiente, con el valor de esta

siendo equivalente al de la imagen de la función cuando los restantes valores son sus

parámetros.

Esta representación tiene la limitación de requerir que la curva sea una función. No todas

las curvas cumplen con dicha condición. Para poder trabajar con la misma como si se

tratara de una función, lo que se hace es elegir un dominio y una imagen diferentes, en

donde la misma sí sea función. Para hacer esto, tanto x como y son considerados

variables dependientes, cuyo resultado surge de una tercera variable (sin representación

gráfica) conocida como «parámetro».

Encontraremos diferentes ecuaciones parametricas las cuales nos generan algunas de la

siguientes figuras:

Epitrocoide, Hipotrocoide, Cicloide, Deltoide, Figuras de Lissajous.

Epitrocoide:

   

Cicloide:

Deltoide:

Lissajous:

Hipotrocoide:

Ahora vamos a generar cada una de las figuras en un programa con VB.

Algoritmo Epitrocoide:

Dim X, Y As Single

X = (RadioCG + RadioCE) * Math.Sin(AnguloCirculo)

Y = (RadioCG + RadioCE) * Math.Cos(AnguloCirculo)

e.Graphics.DrawEllipse(New Pen(Color.BlueViolet, 3), X – RadioCE, Y – RadioCE, 2 *

RadioCE, 2 * RadioCE)

‘Colocamos el lapiz sobre el circulo externo. El lapíz dibujara la curva Epitrocoide

Dim X1, Y1 As Single

X1 = (RadioCG + RadioCE) * Math.Sin(AnguloCirculo) – d * Math.Sin(((RadioCG +

RadioCG + RadioCE) / RadioCE) * AnguloCirculo)

Y1 = (RadioCG + RadioCE) * Math.Cos(AnguloCirculo) – d * Math.Cos(((RadioCG +

RadioCG + RadioCE) / RadioCE) * AnguloCirculo)

e.Graphics.DrawLine(New Pen(Color.Gray, 3), X, Y, X1, Y1)

‘El extremo del lapiz dibuja la curva parametrica epitrocoide

Dim Puntos As Point = New Point(X1, Y1)

TrazoEpitrocoide.Add(Puntos)

For i = 1 To TrazoEpitrocoide.Count – 1

e.Graphics.DrawLine(New Pen(Color.OrangeRed, 4), TrazoEpitrocoide(i),

TrazoEpitrocoide(i – 1))

Next

Algoritmo Cicloide:

Dim X, Y As Single

X = RadioCI * (AnguloCirculo – Math.Sin(AnguloCirculo))

Y = RadioCI * (1 – Math.Cos(AnguloCirculo))

e.Graphics.DrawEllipse(New Pen(Color.BlueViolet, 3), (AnguloCirculo + X) – posIn, (0 –

2 * RadioCI), 2 * RadioCI, 2 * RadioCI)

‘Colocamos el lapiz sobre el circulo. El lapíz dibujara la curva cicloide

Dim X1, Y1 As Single

X1 = RadioCI + RadioCI * (AnguloCirculo – Math.Sin(AnguloCirculo))

Y1 = -RadioCI * (1 – Math.Cos(AnguloCirculo))

e.Graphics.DrawLine(New Pen(Color.Gray, 3), (AnguloCirculo + X + RadioCI) – posIn, (0

– RadioCI), X1 – posIn, Y1)

‘El extremo del lapiz dibuja la curva

Dim Puntos As Point = New Point(X1 – posIn, Y1)

TrazoEpitrocoide.Add(Puntos)

For i = 1 To TrazoEpitrocoide.Count – 1

e.Graphics.DrawLine(New Pen(Color.OrangeRed, 4), TrazoEpitrocoide(i),

TrazoEpitrocoide(i – 1))

Next

Algoritmo Deltoide:

Dim X, Y As Single

X = (RadioCG – RadioCE) * Math.Sin(Angulo_Circulo)

Y = (RadioCG – RadioCE) * Math.Cos(Angulo_Circulo)

e.Graphics.DrawEllipse(New Pen(Color.BlueViolet, 3), X – RadioCE, Y – RadioCE, 2 *

RadioCE, 2 * RadioCE)

‘Colocamos el Lapiz Sobre el Circulo Externo, el lapiz dibujara la curva Deltoide

Dim X1, Y1 As Single

X1 = (RadioCG – RadioCE) * Math.Sin(Angulo_Circulo) + RadioCE *

Math.Sin(Angulo_Circulo * (1 – (RadioCG / RadioCE)))

Y1 = (RadioCG – RadioCE) * Math.Cos(Angulo_Circulo) + RadioCE *

Math.Cos(Angulo_Circulo * (1 – (RadioCG / RadioCE)))

e.Graphics.DrawLine(New Pen(Color.Gray, 3), X, Y, X1, Y1)

‘El Circulo Externo con el Lapiz Dijuba la curva parametrica Deltoide

Dim Puntos As Point = New Point(X1, Y1)

TrazoDeltoide.Add(Puntos)

For i = 1 To TrazoDeltoide.Count – 1

e.Graphics.DrawLine(New Pen(Color.OrangeRed, 4), TrazoHipocicloide(i),

TrazoDeltoide (i – 1))

Next

Algoritmo Hipotrocoide:

Dim X, Y As Single

X = (RadioCG – RadioCI) * Math.Sin(AnguloCirculo)

Y = (RadioCG – RadioCI) * Math.Cos(AnguloCirculo)

e.Graphics.DrawEllipse(New Pen(Color.BlueViolet, 3), X – RadioCI, Y – RadioCI, 2 *

RadioCI, 2 * RadioCI)

‘Colocamos el lapiz sobre el circulo INTERNO. El lapíz dibujara la curva hipotrocoide

Dim X1, Y1 As Single

X1 = (RadioCG – RadioCI) * Math.Cos(AnguloCirculo) + d * Math.Cos(((RadioCG –

RadioCI) / RadioCI) * AnguloCirculo)

Y1 = (RadioCG – RadioCI) * Math.Sin(AnguloCirculo) – d * Math.Sin(((RadioCG –

RadioCI) / RadioCI) * AnguloCirculo)

e.Graphics.DrawLine(New Pen(Color.Gray, 3), X, Y, X1, Y1)

‘El extremo del lapiz dibuja la curva parametrica Hipotrocoide

Dim Puntos As Point = New Point(X1, Y1)

TrazoHipotrocoide.Add(Puntos)

For i = 1 To TrazoHipotrocoide.Count – 1

e.Graphics.DrawLine(New Pen(Color.OrangeRed, 4), TrazoHipotrocoide(i),

TrazoHipotrocoide(i – 1))

Next

El juego del caos VB.Net

 

 

El término juego del caos originalmente se refería a un método para crear un fractal ,

usando un polígono y un punto inicial seleccionado al azar dentro de él. El fractal se crea

mediante la creación iterativa de una secuencia de puntos, comenzando con el punto

aleatorio inicial, en el que cada punto de la secuencia es una fracción dada de la distancia

entre el punto anterior y uno de los vértices del polígono;

El método del “juego caos” traza puntos en orden aleatorio en todo el atractor. Esto

contrasta con otros métodos de dibujo de fractales, que prueban cada píxel en la pantalla

para ver si pertenece al fractal. La forma general de un fractal se puede trazar

rápidamente con el método del “juego del caos”, pero puede ser difícil trazar en detalle

algunas áreas del fractal.

Ahora reproduciremos las siguientes figuras en un programa en VB para ver como se van

generando, para esto tendremos que hacer algunos codigos de recursividad por ejemplo:

Haremos el numero de puntos i = Int(Rnd() * 6), y las iteraciones sobre los puntos

Y el factor:

Xsiguiente = (Xsiguiente + AristahX(i)) \ 2

Ysiguiente = (Ysiguiente + AristahY(i)) \ 2

Por ultimo dibujar con la instrucción DrawLine

Do

i = Int(Rnd() * 6)

Xsiguiente = (Xsiguiente + AristahX(i)) \ 2

Ysiguiente = (Ysiguiente + AristahY(i)) \ 2

gr.DrawLine(Pens.Red, Xsiguiente, Ysiguiente, Xsiguiente + 1, Ysiguiente + 1

Loop

Donde tambien tendremos la creacion de los puntos para poder empezar:

Private Sub DibujarPuntosCuadrado()

Dim i As Integer

Dim gr As Graphics = Me.CreateGraphics

‘Definimos las aristas del pentagono

AristacX(0) = (Me.ClientRectangle.Width) \ 2

AristacY(0) = 50

AristacX(1) = Me.ClientRectangle.Left + 50

AristacY(1) = (Me.ClientRectangle.Height) \ 2

AristacX(2) = (Me.ClientRectangle.Width) \ 2

AristacY(2) = Me.ClientRectangle.Bottom – 50

AristacX(3) = Me.ClientRectangle.Right – 50

AristacY(3) = (Me.ClientRectangle.Height) \ 2

For i = 0 To 3

gr.FillEllipse(Brushes.Blue, AristacX(i), AristacY(i), R, R)

Next

‘Escojemos al azar una arista , para empezar e

i = Int(Rnd() * 4)

Xsiguiente = AristacX(i)

Ysiguiente = AristacY(i)

End Sub

Con esto podremos reproducir las figuras, unicamente moviendo el numero i, para poder

generar o pentagonos, Hexagonos, Triangulo y Cuadrados.

Conjunto Julia y Mandelbrot VB.Net

Conjunto de Mandelbrot y Julia

 

Objetivo:

Demostrar gráficamente los fractales con algoritmo de Benoit Mandelbrot y Gaston Julia

 

Justificación:

Los números complejos se representan en un plano, de manera que cada número complejo tiene asociado un punto del plano  y viceversa. Esta identificación entre puntos y números es lo que nos interesa saber para poder comprender la representación de los fractales que tratamos con Julia y Mandelbrot en sus ecuaciones.

Conjuntos de Julia y Mandelbrot se obtiene a partir de funciones cuadráticas simples, como por ejemplo:                                       Fc(z) = z2 + c  , donde c  es un número complejo.

Un objeto matemático es un fractal si cumple con las siguientes condiciones:

  • Ser lo suficientemente irregular para ser descrito en términos geométricos tradicionales.
  • Poseer detalles apreciables a cualquier escala de observación, ser autosimilar (sus partes se parecen al todo).
  • Poseer una dimensión de Hausdorff-Besicovitch mayor que su dimensión topológica.
  • Poder ser definido mediante un simple algoritmo recursivo.

 

 

Origen

Mostrar cuál es la motivación del origen de los conjuntos de Julia y Mandelbrot.

Los sistemas dinámicos tienen su origen al estudiar los problemas de evolución. Con un ejemplo me parece que se va a entender la idea.

Ejemplo: Supongamos que la función  f (x)= λx^2 modela la evolución de una población al cabo de un año. Esto es, si tenemos una población inicial de x individuos, al cabo de un año la población será de individuos.

En general nos van a interesar dos problemas: Fijado el parámetro λ , cuál sería la evolución de una población inicial, al cabo de n años; o fijada la población inicial de 0 x individuos, en qué manera afecta el parámetro λ a la evolución de la población.

Ejemplo 2: Siguiendo el ejemplo anterior fijemos λ = 1, entonces resulta que

f x = x^2n .

Este modelo es bastante simple y sencillo, pero no es demasiado realista. Otros modelos más reales, muestran un comportamiento mucho más complicado.

Un ejemplo de esta clase de modelos es la función logística f (x) = λx (1− x) , que en apariencia es apenas un poco más complicada que el ejemplo precedente, pero su comportamiento es bastante más complicado.

El estudio del comportamiento de ésta dio origen al famoso conjunto de Mandelbrot, que veremos más adelante.

Antes de seguir, vamos a definir algunas cosas que nos van a resultar útiles más adelante. Sea f :C → C una función que modela la evolución de un sistema. Dentro del estudio de los sistemas dinámicos nos va a interesar aquellos subconjuntos de C que permanezcan invariantes por la acción de f ; se dicen invariantes en general y los podemos clasificar en:

  • Si f (G) = G , entonces G se dice invariante hacia adelante.
  • Si f G = G , entonces G se dice invariante hacia atrás.
  • Si G cumple ambas propiedades se dice invariante hacia atrás y hacia adelante.

Vista esta pequeña introducción a los sistemas dinámicos, podemos pasar a las teorías especificas de cada modelo.

 

 

 

 

 

 

 

 

Teoria Julia

El conjunto de Julia que se obtiene a partir de esta función se denota Fc. El proceso para  obtener este conjunto de Julia de  es el siguiente:

Se elige un número complejo cualquiera z y se va construyendo una sucesión de números de la siguiente manera:

z0 = z

z1 = F(z0)= z02 + c

z2 = F(z1) =z12+c

zn+1 =  F(zn) =zn2+c

Si esta sucesión queda acotada, entonces se dice que z pertenece al conjunto de Julia de parámetro c, denotado por Jc; de lo contrario, si la sucesión tiende al infinito, z queda excluido de éste.

Es fácil deducir que obtener un conjunto de Julia resulta muy laborioso, pues el proceso anterior habría que repetirlo para cualquier número complejo z, e ir decidiendo en cada caso si dicho número pertenece o no al conjunto Jc.

El conjunto de Julia tiene ciertas propiedades:

  • Es no vacío.
  • Es un conjunto invariante hacia adelante y hacia atrás.
  • Es acotado y cerrado.
  • Tiene interior vacío y no tiene puntos aislados (se dice perfecto).

 

 

Teoria de Mandelbrot

El conjunto de Mandelbrot es el conjunto de números complejos c para los cuales la sucesión de puntos obtenida por el método iterativo

z0 =0

z1 = F(z0)= z02 + c

z2 = F(z1) =z12+c

……………………….

zn+1 =  F(zn) =zn2+c

no tiende a infinito, es decir, está acotada.

El conjunto de Mandelbrot tiene propiedades diferentes de conjuntos de Julia se reparten en diferentes regiones del conjunto M.

  • fc tiene un punto fijo atractivo si y solo si c pertenece al interior de la cardioide de ecuación z=1/2eiq(1−1/2eiq, 0<q≤2p. Además, los conjuntos de Julia asociados a estos parámetros son curvas cerradas simples.
  • fc tiene un dos-ciclo atractivo si y solo si |c+1|<1/4, esto es, si c está en el mayor de principal. Además, los conjuntos de Julia asociados a estos parámetros son uniones de una cantidad numerable de curvas cerradas simples disjuntas 3 a 3. Estas curvas están formadas por las componentes conexas que contienen a los dos puntos del 2-ciclo atractivo y por todas sus preimágenes.
  • En los dos círculos siguientes en tamaño se encuentran los parámetros asociados a conjuntos de Julia para los que la dinámica presenta un ciclo de orden 3 atractivo y cuyos conjuntos de Julia son uniones de una cantidad numerable de curvas cerradas simples disjuntas 4 a 4 y con la propiedad de que donde se tocan 2 se toca también una tercera. Estas curvas están formadas por las componentes conexas que contienen a los tres puntos del 3-ciclo atractivo y por todas sus preimágenes. Los puntos de contacto son todas las preimágenes de uno de los puntos fijos de fc.

 

Código Fuente VB.Net con wpf

Codigo visual en WPF:

<Window x:Class=”MainWindow”

xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”

xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″

xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″

xmlns:local=”clr-namespace:uno”

mc:Ignorable=”d”

Title=”Conjunto de Mandelbrot y Julia con Zoom” Height=”650″ Width=”750″>

 

<StackPanel>

<DockPanel Name=”Main” LastChildFill=”False”>

<Menu Height=”35″ Name=”Menu” DockPanel.Dock=”Top”>

<MenuItem Header=”Mandelbrot” Name=”mnmandelbrot” />

<MenuItem Header=”Julia” Name=”mnjulia” />

<MenuItem Header=”Salir” Name=”mnsalir” />

</Menu>

 

</DockPanel>

<StackPanel Orientation=”Horizontal”

Margin=”5,2,5,2″>

<TextBlock Margin=”0,2,0,0″>Max

Iterations</TextBlock>

<TextBox Name=”tbIterations” Text=”50″

TextAlignment=”Center” Width=”40″

Margin=”5,0,10,5″/>

<TextBlock Margin=”0,2,0,0″>Escape

Radius</TextBlock>

<TextBox Name=”tbRadius” Text=”2″

TextAlignment=”Center” Width=”40″

Margin=”5,0,10,5″/>

 

<TextBlock Margin=”0,2,0,0″>C =</TextBlock>

<TextBox Name=”tbCReal” Text=”1.1″

TextAlignment=”Center” Width=”40″

Margin=”5,0,10,5″/>

<TextBlock Margin=”0,2,0,0″>+</TextBlock>

<TextBox Name=”tbCImag” Text=”0″

TextAlignment=”Center” Width=”40″

Margin=”5,0,5,5″/>

<TextBlock Margin=”0,2,0,0″>* i</TextBlock>

</StackPanel>

<StackPanel Orientation=”Horizontal”

Margin=”5,5,5,10″ HorizontalAlignment=”Right”>

 

<Button Content=”Reset” Height=”23″ HorizontalAlignment=”Center” Margin=”28,12,0,0″ Name=”button1″ VerticalAlignment=”Top” Width=”75″ Click=”button1_Click” />

<Button Content=”Iniciar” Name=”button2″  Width=”75″ Height=”23″ Margin=”28,12,0,0″/>

</StackPanel>

<Grid>

<Canvas Name=”Canvas1″  MouseLeftButtonDown=”Canvas1_MouseLeftButtonDown” MouseLeftButtonUp=”Canvas1_MouseLeftButtonUp” MouseMove=”Canvas1_MouseMove”>

<Image Name=”image1″  Height=”450″  Width=”750″ />

<TextBlock  Name=”textointro” FontSize=”15″ HorizontalAlignment=”Center” VerticalAlignment=”Center” TextAlignment=”Center” Width=”750″>

Bienvenido <LineBreak/>

<LineBreak/>

Selecciona el fractal que desas visualizar en el menu superior  <LineBreak/>

<LineBreak/>

Angel Grajales Perez  M:207201617

 

</TextBlock>

</Canvas>

</Grid>

</StackPanel>

 

</Window>

 

Código en VB.net

Imports System.Numerics

 

Class MainWindow

Inherits Window

Dim bandera As Integer

Private NIterations As Integer

Private MaxRadius2 As Double

Private Cx0 As Double

Private Cy0 As Double

Private area As Rect = New Rect(New Point(-2.0, -1.0), New Point(2.0, 1.0))

Private selection As Rectangle = New Rectangle() With {

.Stroke = Brushes.Blue,

.StrokeThickness = 1,

.Visibility = Visibility.Collapsed

}

Private mousedown1 As Boolean = False

Private mousedownpos As Point

 

Public Sub New()

InitializeComponent()

Initializar()

End Sub

 

Private Sub Initializar()

tbCReal.Text = “-0.8”

tbCImag.Text = “0.156”

tbIterations.Text = “200”

tbRadius.Text = “4.0”

MaxRadius2 = 4.0

Cx0 = -0.8

Cy0 = 0.156

NIterations = 200

Canvas1.Children.Add(selection)

End Sub

‘boton de reset para ambos casos

Private Sub button1_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)

If (bandera = 1) Then

area = New Rect(New Point(-2.0, -1.0), New Point(2.0, 1.0))

image1.Source = drawSet(area)

ElseIf (bandera = 2) Then

area = New Rect(New Point(-2.0, -1.0), New Point(2.0, 1.0))

image1.Source = drawSet2(area)

End If

 

End Sub

‘funcion que grafica mandelbrot

Private Function drawSet(ByVal area As Rect) As WriteableBitmap

 

NIterations = Int32.Parse(tbIterations.Text)

MaxRadius2 = 2.0 * Double.Parse(tbRadius.Text)

Dim PixelHeight As Integer = CInt(Math.Truncate(image1.Height))

Dim PixelWidth As Integer = CInt(Math.Truncate(image1.Width))

Dim wbmap As WriteableBitmap = New WriteableBitmap(PixelWidth, PixelHeight, 96, 96, PixelFormats.Pbgra32, Nothing)

Dim BytesPerPixel As Integer = wbmap.Format.BitsPerPixel \ 8

Dim pixels As Byte() = New Byte(PixelHeight * PixelWidth * BytesPerPixel – 1) {}

Dim s As Integer = PixelWidth * BytesPerPixel

Dim xscale As Double = (area.Right – area.Left) / PixelWidth

Dim yscale As Double = (area.Top – area.Bottom) / PixelHeight

Dim i As Integer = 0

 

While i < pixels.Length

Dim py As Integer = i \ s

Dim px As Integer = (i Mod s) \ BytesPerPixel

Dim x As Double = area.Left + px * xscale

Dim y As Double = area.Top – py * yscale

Dim z As Complex = New Complex(x, y)

Dim count As Integer = mandelbrot(z)

Dim C1 As Color = colorMap(count)

pixels(i) = C1.B

pixels(i + 1) = C1.G

pixels(i + 2) = C1.R

pixels(i + 3) = C1.A

i += BytesPerPixel

End While

 

wbmap.WritePixels(New Int32Rect(0, 0, PixelWidth, PixelHeight), pixels, s, 0)

Return wbmap

End Function

‘funcion que grafica julia

Private Function drawSet2(ByVal area As Rect) As WriteableBitmap

NIterations = Int32.Parse(tbIterations.Text)

MaxRadius2 = 2.0 * Double.Parse(tbRadius.Text)

Dim PixelHeight As Integer = CInt(Math.Truncate(image1.Height))

Dim PixelWidth As Integer = CInt(Math.Truncate(image1.Width))

Dim wbmap As WriteableBitmap = New WriteableBitmap(PixelWidth, PixelHeight, 96, 96, PixelFormats.Pbgra32, Nothing)

Dim BytesPerPixel As Integer = wbmap.Format.BitsPerPixel \ 8

Dim pixels As Byte() = New Byte(PixelHeight * PixelWidth * BytesPerPixel – 1) {}

Dim s As Integer = PixelWidth * BytesPerPixel

Dim xscale As Double = (area.Right – area.Left) / PixelWidth

Dim yscale As Double = (area.Top – area.Bottom) / PixelHeight

Dim i As Integer = 0

 

While i < pixels.Length

Dim py As Integer = i \ s

Dim px As Integer = (i Mod s) \ BytesPerPixel

Dim x As Double = area.Left + px * xscale

Dim y As Double = area.Top – py * yscale

Cx0 = Double.Parse(tbCReal.Text)

Cy0 = Double.Parse(tbCImag.Text)

Dim c As Complex = New Complex(Cx0, Cy0)

Dim z As Complex = New Complex(x, y)

Dim count As Integer = julia(c, z)

Dim C1 As Color = colorMap(count)

pixels(i) = C1.B

pixels(i + 1) = C1.G

pixels(i + 2) = C1.R

pixels(i + 3) = C1.A

i += BytesPerPixel

End While

wbmap.WritePixels(New Int32Rect(0, 0, PixelWidth, PixelHeight), pixels, s, 0)

Return wbmap

End Function

‘ color de 4 bits con rgb y alpha para los colores

Private Function colorMap(ByVal count As Integer) As Color

Dim C As Color = New Color()

C.B = CByte((count \ 100) * 25)

count = count Mod 100

C.G = CByte((count \ 10) * 25)

C.R = CByte((count Mod 10) * 25)

C.A = 255

Return C

End Function

‘algortimo de mandelbrot

Private Function mandelbrot(ByVal c As Complex) As Int32

Dim count As Int32 = 0

Dim z As Complex = Complex.Zero

While count < NIterations AndAlso z.Magnitude < MaxRadius2

z = z * z + c

count += 1

End While

Return count

End Function

‘ algortimo de julia

Private Function julia(ByVal c As Complex, ByVal z As Complex) As Int32

Dim count As Int32 = 0

While count < NIterations AndAlso z.Magnitude < MaxRadius2

z = z * z + c

count += 1

End While

Return count

End Function

‘ zoom cuando se presiona el boton

Private Sub Canvas1_MouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)

 

mousedown1 = True

mousedownpos = e.GetPosition(Canvas1)

Canvas.SetLeft(selection, mousedownpos.X)

Canvas.SetTop(selection, mousedownpos.Y)

selection.Width = 0

selection.Height = 0

selection.Visibility = Visibility.Visible

 

End Sub

‘zoom cuando se suelta el boton

Private Sub Canvas1_MouseLeftButtonUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)

selection.Visibility = Visibility.Collapsed

Dim xscale As Double = (area.Right – area.Left) / image1.Width

Dim yscale As Double = (area.Top – area.Bottom) / image1.Height

Dim TopLeft As Point = New Point(area.Left + Canvas.GetLeft(selection) * xscale, area.Top – Canvas.GetTop(selection) * yscale)

Dim BottomRight As Point = TopLeft + New Vector(selection.Width * xscale, -selection.Height * yscale)

area = New Rect(TopLeft, BottomRight)

 

If (bandera = 1) Then

image1.Source = drawSet(area)

ElseIf (bandera = 2) Then

image1.Source = drawSet2(area)

End If

 

End Sub

 

Private Sub Canvas1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)

If mousedown1 Then

Dim mousepos As Point = e.GetPosition(Canvas1)

Dim diff As Vector = mousepos – mousedownpos

Dim TopLeft As Point = mousedownpos

 

If diff.X < 0 Then

TopLeft.X = mousepos.X

diff.X = -diff.X

End If

 

If diff.Y < 0 Then

TopLeft.Y = mousepos.Y

diff.Y = -diff.Y

End If

 

selection.Width = diff.X

selection.Height = diff.Y

Canvas.SetLeft(selection, TopLeft.X)

Canvas.SetTop(selection, TopLeft.Y)

 

End If

 

End Sub

 

Private Sub Mnmandelbrot_Click(sender As Object, e As RoutedEventArgs) Handles mnmandelbrot.Click

‘guarda bandera el valor para identificar que conjunto mostrara

bandera = 1

tbCReal.IsEnabled = “False”

tbCImag.IsEnabled = “False”

textointro.Visibility = Visibility.Hidden

‘dibuja el conjunto y su area

area = New Rect(New Point(-2.0, -1.0), New Point(2.0, 1.0))

image1.Source = drawSet(area)

End Sub

 

Private Sub Mnsalir_Click(sender As Object, e As RoutedEventArgs) Handles mnsalir.Click

‘Metodo para salir

System.Windows.Application.Current.Shutdown()

End Sub

 

Private Sub Mnjulia_Click(sender As Object, e As RoutedEventArgs) Handles mnjulia.Click

‘guarda bandera el valor para identificar que conjunto mostrara

bandera = 2

tbCReal.IsEnabled = “True”

tbCImag.IsEnabled = “True”

textointro.Visibility = Visibility.Hidden

‘dibuja el conjunto y su area

area = New Rect(New Point(-2.0, -1.0), New Point(2.0, 1.0))

image1.Source = drawSet2(area)

End Sub

 

Private Sub Button2_Click(sender As Object, e As RoutedEventArgs) Handles button2.Click

If (bandera = 1) Then

image1.Source = drawSet(area)

ElseIf (bandera = 2) Then

image1.Source = drawSet2(area)

End If

 

End Sub

End Class

 

 

Capturas de pantalla