Several examples run on only mbed-os5.13.0 (not 5.14.0)

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Committer:
kenjiArai
Date:
Mon Oct 14 08:55:15 2019 +0000
Revision:
4:0f4affc00183
Parent:
3:35ac9ee7d2d6
Several Examples

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 3:35ac9ee7d2d6 1 //------------------------------------------------------
kenjiArai 3:35ac9ee7d2d6 2 // Class for drawing Mandelbrot set
kenjiArai 3:35ac9ee7d2d6 3 // 2015/11/03, Copyright (c) 2015 MIKAMI, Naoki
kenjiArai 3:35ac9ee7d2d6 4 //-----------------------------------------------------------
kenjiArai 4:0f4affc00183 5 // https://os.mbed.com/users/MikamiUitOpen/code/F746_Mandelbrot/
kenjiArai 4:0f4affc00183 6 //
kenjiArai 4:0f4affc00183 7 // Modified by JH1PJL/K.Arai October 14th, 2019 for DISCO-F769NI
kenjiArai 3:35ac9ee7d2d6 8
kenjiArai 3:35ac9ee7d2d6 9 #include "mandelbrot.hpp"
kenjiArai 3:35ac9ee7d2d6 10
kenjiArai 3:35ac9ee7d2d6 11 namespace Mikami
kenjiArai 3:35ac9ee7d2d6 12 {
kenjiArai 3:35ac9ee7d2d6 13 void MandelbrotBase::Display(float x1, float x2, float y1, float y2)
kenjiArai 3:35ac9ee7d2d6 14 {
kenjiArai 3:35ac9ee7d2d6 15 x1_ = x1;
kenjiArai 3:35ac9ee7d2d6 16 y1_ = y1;
kenjiArai 3:35ac9ee7d2d6 17
kenjiArai 3:35ac9ee7d2d6 18 ax_ = (x2 - x1)/(NX_ - 1);
kenjiArai 3:35ac9ee7d2d6 19 ay_ = (y2 - y1)/(NY_ - 1);
kenjiArai 3:35ac9ee7d2d6 20
kenjiArai 3:35ac9ee7d2d6 21 for (int nx=0; nx<NX_; nx++)
kenjiArai 3:35ac9ee7d2d6 22 for (int ny=0; ny<NY_; ny++)
kenjiArai 3:35ac9ee7d2d6 23 {
kenjiArai 3:35ac9ee7d2d6 24 uint32_t color = GetColor(Converge(Complex(Fx(nx), Fy(ny))));
kenjiArai 3:35ac9ee7d2d6 25 LCD_->DrawPixel(X0_+nx, Y0_+ny, color);
kenjiArai 3:35ac9ee7d2d6 26 }
kenjiArai 3:35ac9ee7d2d6 27 }
kenjiArai 3:35ac9ee7d2d6 28
kenjiArai 3:35ac9ee7d2d6 29 // discrimination of congergence
kenjiArai 3:35ac9ee7d2d6 30 int MandelbrotBase::Converge(Complex c)
kenjiArai 3:35ac9ee7d2d6 31 {
kenjiArai 3:35ac9ee7d2d6 32 Complex zn = 0; // initial value
kenjiArai 3:35ac9ee7d2d6 33
kenjiArai 3:35ac9ee7d2d6 34 for (int n=1; n<=MAX_COUNT_; n++)
kenjiArai 3:35ac9ee7d2d6 35 {
kenjiArai 3:35ac9ee7d2d6 36 zn = zn*zn + c;
kenjiArai 3:35ac9ee7d2d6 37 if ((Sqr(zn.real()) + Sqr(zn.imag())) > 4)
kenjiArai 3:35ac9ee7d2d6 38 return(n); // diverge
kenjiArai 3:35ac9ee7d2d6 39 }
kenjiArai 3:35ac9ee7d2d6 40 return 0; // converge
kenjiArai 3:35ac9ee7d2d6 41 }
kenjiArai 3:35ac9ee7d2d6 42
kenjiArai 3:35ac9ee7d2d6 43 // Get the color corresponding to the number of repititions (Color1)
kenjiArai 3:35ac9ee7d2d6 44 uint32_t MandelbrotColor1::GetColor(int x)
kenjiArai 3:35ac9ee7d2d6 45 {
kenjiArai 3:35ac9ee7d2d6 46 if (x == 0) return LCD_COLOR_BLACK;
kenjiArai 3:35ac9ee7d2d6 47 uint32_t clr[] = { LCD_COLOR_BLUE, LCD_COLOR_CYAN, LCD_COLOR_LIGHTGREEN,
kenjiArai 3:35ac9ee7d2d6 48 LCD_COLOR_GREEN, LCD_COLOR_YELLOW, LCD_COLOR_LIGHTYELLOW,
kenjiArai 3:35ac9ee7d2d6 49 LCD_COLOR_RED, LCD_COLOR_DARKMAGENTA, LCD_COLOR_MAGENTA};
kenjiArai 3:35ac9ee7d2d6 50 return clr[(x-1) % 9];
kenjiArai 3:35ac9ee7d2d6 51 }
kenjiArai 3:35ac9ee7d2d6 52
kenjiArai 3:35ac9ee7d2d6 53 // Get the color corresponding to the number of repititions (Color2)
kenjiArai 3:35ac9ee7d2d6 54 uint32_t MandelbrotColor2::GetColor(int x)
kenjiArai 3:35ac9ee7d2d6 55 {
kenjiArai 3:35ac9ee7d2d6 56 int b = Max255(20 + x*50);
kenjiArai 3:35ac9ee7d2d6 57 int g = (x > 5) ? Max255((x - 5)*30) : 0;
kenjiArai 3:35ac9ee7d2d6 58 int r = (x > 20) ? Max255((x - 20)*10) : 0;
kenjiArai 3:35ac9ee7d2d6 59 return 0xFF000000 | (r << 16) | (g << 8) | b;
kenjiArai 3:35ac9ee7d2d6 60 }
kenjiArai 3:35ac9ee7d2d6 61 }