-
Notifications
You must be signed in to change notification settings - Fork 0
Home
sVision edited this page Jan 13, 2021
·
4 revisions
Welcome to the FractalQT wiki!
- https://www.ted.com/talks/benoit_mandelbrot_fractals_and_the_art_of_roughness/transcript#t-951199
- https://awesomeopensource.com/project/crapp/geomandel
- http://marvinproject.sourceforge.net/en/plugins/iteratedFunctionSystem.html
- http://rosettacode.org/wiki/Mandelbrot_set
import java.awt.Graphics;
public class c13_julia extends java.applet.Applet {
static final int left = 20;
static final int w = 300;
static final int s = w/3;
static final int orig = left + w/2;
static final double xc = -1;
static final double yc = 0.1;
public void paint(Graphics g)
{
LineTo lt = new LineTo(g);
lt.drawLine(left, left+w/2, left+w, left+w/2);
lt.drawLine(left+w/2, left, left+w/2, left+w);
double xn = 0.25;
double yn = 0;
for (int i = 0; i < 5000; i++) {
double a = xn - xc;
double b = yn - yc;
if (a == 0) {
xn = Math.sqrt(Math.abs(b)/2);
if (xn > 0) {
yn = b/(2*xn);
} else {
yn = 0;
}
} else if (a > 0) {
xn = Math.sqrt((Math.sqrt(a*a + b*b) + a)/2);
yn = b / (2 * xn);
} else {
yn = Math.sqrt((Math.sqrt(a*a + b*b) - a)/2);
xn = b / (2 * yn);
}
if (i == 0) {
xn += 0.5;
}
if (Math.random() >= 0.5) {
xn = -xn;
yn = -yn;
}
lt.setPixel((int)(xn*s + orig), (int)(-yn*s + orig));
}
}
}
import java.awt.*;
import java.awt.event.*;
public class c03_koch extends java.applet.Applet {
double r = 0.29;
int n = 5;
Graph graph;
Controls controls;
class Graph extends Canvas {
public void paint(Graphics g)
{
koch(g, 1, 30, 190, 30+300, 190);
}
private void koch(Graphics g, int level, double x1, double y1, double x2, double y2)
{
if (level < n) {
double nx = (2*x1+x2)/3;
double ny = (2*y1+y2)/3;
koch(g, level+1, x1, y1, nx, ny);
double ox = nx;
double oy = ny;
nx = (x1+x2)/2 - r*(y1-y2);
ny = (y1+y2)/2 + r*(x1-x2);
koch(g, level+1, ox, oy, nx, ny);
ox = nx; oy = ny;
nx = (x1+2*x2)/3;
ny = (y1+2*y2)/3;
koch(g, level+1, ox, oy, nx, ny);
koch(g, level+1, nx, ny, x2, y2);
} else {
g.drawLine((int)x1, (int)y1, (int)x2, (int)y2);
}
}
}
class Controls extends Container {
private TextField tr;
private TextField tn;
private Button redraw;
public Controls()
{
setLayout(new FlowLayout());
add(new Label("r =", Label.RIGHT));
add(tr = new TextField(""+r, 6));
add(new Label("n =", Label.RIGHT));
add(tn = new TextField(""+n, 6));
add(redraw = new Button("Redraw"));
redraw.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
r = Double.valueOf(tr.getText()).doubleValue();
n = Integer.parseInt(tn.getText());
} catch (NumberFormatException nfx) {
}
c03_koch.this.graph.repaint();
}
}
);
}
}
public void init()
{
setLayout(new BorderLayout());
add(controls = new Controls(), BorderLayout.SOUTH);
add(graph = new Graph(), BorderLayout.CENTER);
}
}