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 -- Header
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 April 26th, 2018 for DISCO-F469NI
kenjiArai 4:0f4affc00183 8 // Modified by JH1PJL/K.Arai October 14th, 2019 for DISCO-F769NI
kenjiArai 3:35ac9ee7d2d6 9
kenjiArai 3:35ac9ee7d2d6 10 #ifndef F769_MANDELBROT_HPP
kenjiArai 3:35ac9ee7d2d6 11 #define F769_MANDELBROT_HPP
kenjiArai 3:35ac9ee7d2d6 12
kenjiArai 3:35ac9ee7d2d6 13 #include "mbed.h"
kenjiArai 3:35ac9ee7d2d6 14 #include "TS_DISCO_F769NI.h"
kenjiArai 3:35ac9ee7d2d6 15 #include "LCD_DISCO_F769NI.h"
kenjiArai 3:35ac9ee7d2d6 16
kenjiArai 3:35ac9ee7d2d6 17 #include <complex> // requisite for complex
kenjiArai 3:35ac9ee7d2d6 18 typedef complex<float> Complex; // define "Complex"
kenjiArai 3:35ac9ee7d2d6 19
kenjiArai 3:35ac9ee7d2d6 20 namespace Mikami
kenjiArai 3:35ac9ee7d2d6 21 {
kenjiArai 3:35ac9ee7d2d6 22 // Base class of Mandelbrot set drawer
kenjiArai 3:35ac9ee7d2d6 23 class MandelbrotBase
kenjiArai 3:35ac9ee7d2d6 24 {
kenjiArai 3:35ac9ee7d2d6 25 public:
kenjiArai 3:35ac9ee7d2d6 26 // Constructor
kenjiArai 3:35ac9ee7d2d6 27 MandelbrotBase(LCD_DISCO_F769NI &lcd,
kenjiArai 3:35ac9ee7d2d6 28 int x0, int y0, int width, int height, int maxCount)
kenjiArai 3:35ac9ee7d2d6 29 : LCD_(&lcd), X0_(x0), Y0_(y0), NX_(width), NY_(height),
kenjiArai 3:35ac9ee7d2d6 30 MAX_COUNT_(maxCount) {}
kenjiArai 3:35ac9ee7d2d6 31
kenjiArai 3:35ac9ee7d2d6 32 void Display(float x1, float x2, float y1, float y2);
kenjiArai 3:35ac9ee7d2d6 33
kenjiArai 3:35ac9ee7d2d6 34 // translate position in the screen to real coordinate value
kenjiArai 3:35ac9ee7d2d6 35 float Fx(int x) { return ax_*x + x1_; }
kenjiArai 3:35ac9ee7d2d6 36 float Fy(int y) { return ay_*y + y1_; }
kenjiArai 3:35ac9ee7d2d6 37
kenjiArai 3:35ac9ee7d2d6 38 protected:
kenjiArai 3:35ac9ee7d2d6 39 // limit maximum value to 255
kenjiArai 3:35ac9ee7d2d6 40 int Max255(int n) { return (n > 255) ? 255 : n; }
kenjiArai 3:35ac9ee7d2d6 41
kenjiArai 3:35ac9ee7d2d6 42 private:
kenjiArai 3:35ac9ee7d2d6 43 LCD_DISCO_F769NI *const LCD_;
kenjiArai 3:35ac9ee7d2d6 44 const int X0_; // origin of x axis
kenjiArai 3:35ac9ee7d2d6 45 const int Y0_; // origin of y axis
kenjiArai 3:35ac9ee7d2d6 46 const int NX_; // number of pixels for horizon
kenjiArai 3:35ac9ee7d2d6 47 const int NY_; // number of pixels for vertical
kenjiArai 3:35ac9ee7d2d6 48 const int MAX_COUNT_;
kenjiArai 3:35ac9ee7d2d6 49
kenjiArai 3:35ac9ee7d2d6 50 float x1_, y1_;
kenjiArai 3:35ac9ee7d2d6 51 float ax_, ay_;
kenjiArai 3:35ac9ee7d2d6 52
kenjiArai 3:35ac9ee7d2d6 53 // Get the color corresponding to the number of repititions
kenjiArai 3:35ac9ee7d2d6 54 virtual uint32_t GetColor(int x) = 0;
kenjiArai 3:35ac9ee7d2d6 55
kenjiArai 3:35ac9ee7d2d6 56 float Sqr(float x) { return x*x; }
kenjiArai 3:35ac9ee7d2d6 57
kenjiArai 3:35ac9ee7d2d6 58 // discrimination of congergence
kenjiArai 3:35ac9ee7d2d6 59 int Converge(Complex c);
kenjiArai 3:35ac9ee7d2d6 60 };
kenjiArai 3:35ac9ee7d2d6 61
kenjiArai 3:35ac9ee7d2d6 62 // Derived class of Mandelbrot set drawer to draw black and white pattern
kenjiArai 3:35ac9ee7d2d6 63 class MandelbrotBW : public MandelbrotBase
kenjiArai 3:35ac9ee7d2d6 64 {
kenjiArai 3:35ac9ee7d2d6 65 public:
kenjiArai 3:35ac9ee7d2d6 66 MandelbrotBW(LCD_DISCO_F769NI &lcd,
kenjiArai 3:35ac9ee7d2d6 67 int x0, int y0, int width, int height, int maxCount = 100)
kenjiArai 3:35ac9ee7d2d6 68 : MandelbrotBase(lcd, x0, y0, width, height, maxCount) {}
kenjiArai 3:35ac9ee7d2d6 69
kenjiArai 3:35ac9ee7d2d6 70 // converge: black, diverge: white
kenjiArai 3:35ac9ee7d2d6 71 virtual uint32_t GetColor(int x)
kenjiArai 3:35ac9ee7d2d6 72 { return (x == 0) ? LCD_COLOR_BLACK : LCD_COLOR_WHITE; }
kenjiArai 3:35ac9ee7d2d6 73 };
kenjiArai 3:35ac9ee7d2d6 74
kenjiArai 3:35ac9ee7d2d6 75 // Derived class of Mandelbrot set drawer to draw pattern 1
kenjiArai 3:35ac9ee7d2d6 76 class MandelbrotColor1 : public MandelbrotBase
kenjiArai 3:35ac9ee7d2d6 77 {
kenjiArai 3:35ac9ee7d2d6 78 public:
kenjiArai 3:35ac9ee7d2d6 79 MandelbrotColor1(LCD_DISCO_F769NI &lcd,
kenjiArai 3:35ac9ee7d2d6 80 int x0, int y0, int width, int height, int maxCount = 100)
kenjiArai 3:35ac9ee7d2d6 81 : MandelbrotBase(lcd, x0, y0, width, height, maxCount) {}
kenjiArai 3:35ac9ee7d2d6 82
kenjiArai 3:35ac9ee7d2d6 83 // Get the color corresponding to the number of repititions
kenjiArai 3:35ac9ee7d2d6 84 virtual uint32_t GetColor(int x);
kenjiArai 3:35ac9ee7d2d6 85 };
kenjiArai 3:35ac9ee7d2d6 86
kenjiArai 3:35ac9ee7d2d6 87 // Derived class of Mandelbrot set drawer to draw pattern 2
kenjiArai 3:35ac9ee7d2d6 88 class MandelbrotColor2 : public MandelbrotBase
kenjiArai 3:35ac9ee7d2d6 89 {
kenjiArai 3:35ac9ee7d2d6 90 public:
kenjiArai 3:35ac9ee7d2d6 91 MandelbrotColor2(LCD_DISCO_F769NI &lcd,
kenjiArai 3:35ac9ee7d2d6 92 int x0, int y0, int width, int height, int maxCount = 100)
kenjiArai 3:35ac9ee7d2d6 93 : MandelbrotBase(lcd, x0, y0, width, height, maxCount) {}
kenjiArai 3:35ac9ee7d2d6 94
kenjiArai 3:35ac9ee7d2d6 95 // Get the color corresponding to the number of repititions
kenjiArai 3:35ac9ee7d2d6 96 virtual uint32_t GetColor(int x);
kenjiArai 3:35ac9ee7d2d6 97 };
kenjiArai 3:35ac9ee7d2d6 98 }
kenjiArai 3:35ac9ee7d2d6 99
kenjiArai 3:35ac9ee7d2d6 100 #endif // F769_MANDELBROT_HPP