non poteva mancare il fedele compagno dell'insieme di Mandelbrot ovvero l'insieme di Julia
In pratica esiste una corrispondenza tra le coordinate nel piano complesso dell'insieme di Mandelbrot ed il corrispettivo insieme di Julia
L'esempio sopra riportato e' corrispondente al punto-0.125;0.75 dell'insieme di Mandelbrot
Il codice e' estremamente simile a quello del precedente post
package com.julia;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Display;
import android.widget.ImageView;
public class JuliaIntActivity extends Activity {
/** Called when the activity is first created. */
private static final double re_min = -2;
private static final double re_max = 2.0;
private static final double im_min = -2.0;
private static final double im_max = 2.0;
private static int iterazioni = 100;
private double ynew;
private double xnew;
private double a;
private double b;
private int test;
private double re_factor;
private double im_factor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView view = (ImageView) findViewById(R.id.imageView1);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); //240
int height = display.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.RGB_565);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.BLACK);
view.setImageBitmap(bitmap);
re_factor = (re_max - re_min);
im_factor = (im_max - im_min);
a = -0.125;
b = 0.75;
// recupera le informazioni sulle dimensioni dello schermo
for (int i=0;i<width;i++)
{
for (int j=0;j<height;j++)
{
double x = im_min + i * im_factor / width;
double y = re_min + j * re_factor / height;
test = 0;
for (int k=0;k<iterazioni;k++)
{
xnew = x * x - y * y + a;
ynew = 2 * x * y + b;
if (((xnew*xnew)+(ynew*ynew))>4)
{
test = k;
k = iterazioni;
}
x = xnew;
y = ynew;
}
if (test%2 == 1)
{
//punto bianco
canvas.drawPoint(i, j, paint);
}
}
}
}
}
Iscriviti a:
Commenti sul post (Atom)
Alpine Linux 2024 su IBM A31
Ho provato a far resuscitare un IBM A31 destinato alla discarica. La macchina ha processore P4, 256 Mb di RAM, la batteria CMOS morta ed e...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
Nessun commento:
Posta un commento