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
Mandelbrot/mandelbrot.hpp@4:0f4affc00183, 2019-10-14 (annotated)
- 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?
User | Revision | Line number | New 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 |