RETURN TO FRACTALUSvoid mandelbrot()
{
uint8_t i,j,k;
uint16_t color;
tft.ClearScreen(WHITE);
#define ORANGE _RGB565(255, 153, 0)
#define GRAY2 _RGB565(200, 200, 200)
byte Farbwahl;
double a, b, r1, r2, calc1, calc2 = 0;
int clrDepth;
int col[256];
int FarbNr;
int j2 = 0;
int BildHoehe = 240;
int BildBreite = 320;
float Breite = -2.3;
float Hoehe = -1.25;
float Breite2 = 0.7;
float Hoehe2 = 1.25;
double StepX, StepY;
Farbwahl = 4;
// Farbverlauf 1
if (Farbwahl == 1)
{
for (int Nr = 0; Nr <= 36; Nr += 1)
{
col[(Nr * 7) + 1] = RED;
col[(Nr * 7) + 2] = ORANGE;
col[(Nr * 7) + 3] = YELLOW;
col[(Nr * 7) + 4] = GREEN;
col[(Nr * 7) + 5] = CYAN;
col[(Nr * 7) + 6] = BLUE;
col[(Nr * 7) + 7] = MAGENTA;
}
col[253] = BLACK;
clrDepth = 253;
}
// Farbverlauf 2
else if (Farbwahl == 2)
{
for (int Nr = 0; Nr <= 42; Nr += 1)
{
col[(Nr * 6) + 1] = GRAY2;
col[(Nr * 6) + 2] = GRAY;
col[(Nr * 6) + 3] = SILVER;
col[(Nr * 6) + 4] = GOLD;
col[(Nr * 6) + 5] = YELLOW;
col[(Nr * 6) + 6] = ORANGE;
}
col[253] = BLACK;
clrDepth = 253;
}
// Farbverlauf 3
else if (Farbwahl == 3)
{
for (int Nr = 1; Nr <= 126; Nr += 1)
{
if (Nr <= 21)
{col[Nr] = _RGB565(129 + (Nr * 6), 0, 0);}
else if (Nr <= 42)
{col[Nr] = _RGB565(255, 129 + ((Nr - 21) * 6), 0);}
else if (Nr <= 63)
{col[Nr] = _RGB565(0, 129 + ((Nr - 42) * 6), 0);}
else if (Nr <= 84)
{col[Nr] = _RGB565(0, 129 + ((Nr - 63) * 6), 171 + ((Nr - 63) * 4));}
else if (Nr <= 105)
{col[Nr] = _RGB565(0, 0, 129 + ((Nr - 84) * 6));}
else if (Nr <= 126)
{col[Nr] = _RGB565(137 + ((Nr - 105) * 3), 0 + ((Nr - 105) * 8), 200 - ((Nr - 105) * 3));}
}
for (int Nr = 127; Nr <= 252; Nr += 1)
{
col[Nr] = col[Nr - 126];;
}
col[253] = BLACK;
clrDepth = 253;
}
// Farbverlauf 4
else if (Farbwahl == 4)
{
FarbNr = 1;
col[1] = _RGB565(255, 0, 0);
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(255, int(float((255 / 9) * Nr)), 0);
}
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(255 - int(float((255 / 9) * Nr)), 255, 0);
}
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(0, 255, int(float((255 / 9) * Nr)));
}
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(0, 255 - int(float((255 / 9) * Nr)), 255);
}
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(int(float(255 / 9) * Nr), 0, 255);
}
for (int Nr = 1; Nr <= 9; Nr += 1)
{
FarbNr = FarbNr + 1;
col[FarbNr] = _RGB565(255, 0, 255 - int(float(255 / 9) * Nr));
}
for (int Nr = 55; Nr <= 108; Nr += 1)
{
col[Nr] = col[Nr - 54];
col[Nr + 54] = col[Nr - 54];
col[Nr + 108] = col[Nr - 54];
}
col[217] = BLACK;
clrDepth = 217;
}
// Berechnung
StepX = (Breite2 - Breite) / BildBreite;
StepY = (Hoehe2 - Hoehe) / BildHoehe;
for (int n = 0; n <= BildHoehe; n += 1)
{
for (int k = 0; k <= BildBreite; k += 1)
{
a = Breite + k * StepX;
b = Hoehe + n * StepY;
j2 = 0;
r1 = 0;
r2 = 0;
do
{
calc1 = r1 * r1 - r2 * r2 + a;
calc2 = 2 * r1 * r2 + b;
r1 = calc1;
r2 = calc2;
j2 += 1;
}
while (((r1 * r1) + (r2 * r2) <= 50) and (j2 != clrDepth));
tft.DrawPixel(k, n, col[j2]);
}
}
wait_for_OK();
}
In dieser aktualisierten Version des Sourcecodes sind nun 4 Farbverläufe für die Bildberechnung enthalten !