جدول المحتويات:

تعيين ماندلبروت وجوليا على ESP32: 4 خطوات (بالصور)
تعيين ماندلبروت وجوليا على ESP32: 4 خطوات (بالصور)

فيديو: تعيين ماندلبروت وجوليا على ESP32: 4 خطوات (بالصور)

فيديو: تعيين ماندلبروت وجوليا على ESP32: 4 خطوات (بالصور)
فيديو: Бенуа Мандельброт: Фракталы и искусство изломанности 2024, يوليو
Anonim
Image
Image
تعيين ماندلبروت وجوليا على ESP32
تعيين ماندلبروت وجوليا على ESP32
تعيين ماندلبروت وجوليا على ESP32
تعيين ماندلبروت وجوليا على ESP32

أنت تعرف بالتأكيد الفركتلات ، وأشهرها مجموعة ماندلبروت.

هنا برنامج للعب به على ESP32. اخترت ESP32 لأنني أعتقد أنها ستجري العمليات الحسابية بشكل أسرع من Arduino القياسي (تردد ساعة أعلى: 240 ميجاهرتز): حوالي ثانية إلى ثانية ونصف للحساب والعرض.

يتم عرض الرمز على شاشة لمس 480 × 320 TFT. يقوم بحساب مجموعات Mandelbrot و Julia للعديد من قيم المعلمات ، ويسمح لك بتكبير المناطق ذات الأهمية لرؤية الجانب الكسوري (أي وجود نفس الهياكل عند كل تغيير في المقياس). مستوى التكبير / التصغير محدود بسبب الدقة المحدودة للحسابات ، ولكن يمكن إجراء نصف دزينة من التكبير / التصغير قبل تدهور الصورة.

استعد لاستكشاف عالم الفركتلات السحري …

الخطوة 1: ما هي مجموعات ماندلبروت وجوليا؟

ما هي مجموعات ماندلبروت وجوليا؟
ما هي مجموعات ماندلبروت وجوليا؟
ما هي مجموعات ماندلبروت وجوليا؟
ما هي مجموعات ماندلبروت وجوليا؟
ما هي مجموعات ماندلبروت وجوليا؟
ما هي مجموعات ماندلبروت وجوليا؟

تم تسمية مجموعة ماندلبروت على اسم بينوا ماندلبروت (1924-2010) ، عالم الرياضيات الفرنسي والأمريكي الذي قام بعمل رائد في الهندسة الفركتلية ، بدأ في نهاية القرن التاسع عشر ، من بين آخرين ، بينو وسييربينسكي وجوليا.

ما هي الأجسام الكسورية؟

عدم انتظام الطبيعة ، التي قد تبدو فوضوية ، مثل خط ساحل البحر ، وشكل الغيوم ، والشجرة ، هي في الواقع تعبير عن هندسة معقدة للغاية على نطاق متغير. في هذا السياق ، يحل مفهوم البعد الكسري محل البعد الإقليدي المعتاد (والذي يكون دائمًا عددًا صحيحًا)!

الكائن الفركتلي هو أن أي جزء منه متطابق مع الكل (وهذا ما يسمى التشابه الذاتي): هيكله ثابت من خلال تغيير المقياس.

مصطلح "كسورية" هو مصطلح جديد ابتكره بينوا ماندلبروت في عام 1974 من الكلمة اللاتينية كسر الجذر ، والتي تعني "مكسور" ، "غير منتظم". إنه اسم وصفة. العديد من الظواهر الطبيعية - مثل مخطط الخطوط الساحلية أو ظهور ملفوف رومانسكو (انظر الصورة) - لها أشكال كسورية تقريبية.

كان لبينوا ماندلبروت مسيرة مهنية غير نمطية إلى حد ما: بعد التدريس في جامعة ليل (فرنسا) ، تولى منصبًا في شركة IBM حيث سرعان ما أصبح زميلًا في IBM ، مما منحه حرية كبيرة في دراسته العلمية. في أوائل الثمانينيات ، بعد أن ترك شركة IBM ، أصبح أستاذًا في جامعة هارفارد ، لكنه استقر بشكل دائم في جامعة ييل.

قاده عمله في الستينيات وأوائل السبعينيات إلى نشر مقال شهير بعنوان "Fractal Objects" أظهر فيه أن هذه الأشياء ، التي يعتبرها جزء كبير من المجتمع الرياضي مجرد فضول ، توجد في كل مكان في الطبيعة. قدم الكثير من الأمثلة في مجموعة متنوعة من المجالات مثل الفيزياء ، والهيدرولوجيا ، والتمويل ، والأرصاد الجوية ، والجغرافيا ، والجيولوجيا ، وعلم المعادن….

ما هي مجموعة ماندلبروت؟

للبدء ، دعنا نقول أنه رسم جميل تم إنشاؤه بواسطة برنامج. وهذا البرنامج بسيط للغاية ، فهناك العديد من الرسومات التي تم إنشاؤها بواسطة الكمبيوتر والعديد من برامج الكمبيوتر لإنشائها. إذن ما الذي يميز هذا؟ أولاً ، مجموعة Mandelbrot هي مجموعة فرعية من الخطة ، مجموعة من النقاط. يحتوي على مناطق ولكن أيضًا منحنيات ناعمة وخيوط ونقاط تنبثق منها عدة فروع وأشياء أخرى. ثانيًا: إنه أمر رائع حقًا وله تاريخ مثير للغاية.

في بداية القرن العشرين ، طور عالما الرياضيات الفرنسيان بيير فاتو وجاستون جوليا مجالًا فرعيًا للرياضيات يسمى ديناميات الهولومورفيك. كانوا مهتمين بوظائف معينة ، والعمل على الأرقام ، باستخدام بعض من أبسط الصيغ المتاحة. الأرقام المعنية هي أرقام مركبة ، كميات ممثلة بإحداثيين (تمامًا مثل نقاط المستوى) تسمى الأجزاء الحقيقية والتخيلية. تم اختراعها في القرن السادس عشر من قبل علماء الرياضيات للمساعدة في العثور على جذور كثيرات الحدود وحل المعادلات ولكنها وجدت تطبيقات واسعة وعميقة في الرياضيات والعلوم الفيزيائية. يمكننا إضافة عددين مركّبين وضربهما وقسمتهما والقيام بأشياء أخرى كثيرة. درس فاتو وجوليا خصائص أنظمة ديناميكية معينة حيث يختلف العدد المركب وفقًا لقاعدة بسيطة تتكرر مرارًا وتكرارًا: لا داعي للرياضيات المعقدة هنا (لذا يمكنك أن تنسى الصورة الأولى…). لقد كشفوا عن ثراء هذه الأنظمة ، وحددوا المجموعات التي تسمى الآن مجموعات جوليا ، ودرسوا تشابههم الذاتي ، وبالتالي الجانب الكسوري … لكن الكلمة لم تكن موجودة في ذلك الوقت لأنها اخترعت فقط في وقت لاحق ، من قبل … بينوا ماندلبروت!

بعد عمل المؤسسين ، سقط هذا المجال في النسيان. عندما وصلت أجهزة الكمبيوتر ، ساعدوا في استكشاف الكثير من الظواهر الرياضية التي تتطلب حوسبة مكثفة ، بما في ذلك المجال الذي فتحته جوليا وفاتو ، وهكذا عندما قرر بينوا ماندلبروت استخدام أجهزة كمبيوتر IBM في الثمانينيات لتمثيل مجموعة رياضية معينة تتعلق بديناميات مجسمة. حصل على رسم جذاب ومثير للاهتمام للغاية (الصورة الأولى للقسم السابق).

ماذا تمثل مجموعة ماندلبروت؟ في الأساس ، هناك نظام ديناميكي أساسي مرتبط بكل نقطة من الصورة. إحداثيات النقطة تعمل كمعامل قابل للتعديل. تتوافق النقاط المختلفة مع مجموعات مختلفة من جوليا واعتمادًا على سلوكهم ، يمكننا أن نقرر تلوين النقطة بطريقة معينة. مجموعة Mandelbrot هي مجموعة المعلمات التي يمتلك النظام خاصية معينة لها.

كيف تحسب مجموعات ماندلبروت وجوليا؟

نحتاج إلى الخوض في مزيد من التفاصيل حول كيفية حساب هذه المجموعات. تُحسب مجموعات ماندلبروت وجوليا بالتكرار المتكرر لصيغة بسيطة ، في حالتنا z ^ n + c. z هو رقم مركب يمثل إحداثيات نقطة على الشاشة. هو أس عدد صحيح ، لذا فإن z ^ n يساوي z مضروبًا في نفسه n مرة ، و c ثابت.

بالنسبة لمجموعة Mandelbrot ، بالنسبة لجميع النقاط في منطقة العرض ، نقوم بتهيئة z إلى 0. يؤخذ الثابت c مساويًا لقيمة إحداثيات النقطة المدروسة ويتم تكرار الصيغة.

هذه هي القاعدة: تعتبر النقطة جزءًا من المجموعة إذا كان التطبيق المتكرر لهذه الصيغة لا يتباعد (أي لا يؤدي إلى حسابات نحو أعداد كبيرة). يمكن أن يُظهر رياضيًا أنه إذا تجاوزت نتيجة الصيغة 2 (في المعامل نظرًا لأننا نتحدث عن الأعداد المركبة) فإن التكرار سوف يتباعد. لذلك للحصول على ألوان جميلة بسرعة ، نوقف التكرار عندما يتجاوز معامل النتيجة 2 ويتوافق اللون مع عدد هذا التكرار المحدد. إذا أصبح عدد التكرارات كبيرًا جدًا (لذلك إذا كانت النقطة جزءًا من مجموعة Mandelbrot) نتوقف بعد حد معين ونربط اللون الأسود بهذه النقطة.

يتم حساب مجموعة Julia بطريقة مماثلة ولكن لم تتم تهيئة الحسابات عند 0 ولكن بقيمة إحداثيات النقطة المدروسة ويتم اختيار الثابت c بواسطة المستخدم ويظل كما هو للصورة بأكملها.

هذا كل شيء ، وآمل أن يكون واضحًا … تساعد هذه التفسيرات على فهم بقية تعليمات الاستخدام بشكل أفضل.

الخطوة الثانية: ماذا تحتاج؟

ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟
ماذا تحتاج؟

فاتورة المواد:

  • 1 لوحة ESP32
  • 1 شاشة TFT مع شاشة تعمل باللمس وقلم
  • 1 لوح توصيل وأسلاك

هذا كل شيء. التكلفة الإجمالية أقل من 10 دولارات أمريكية.

Espressif's ESP32 هو متحكم دقيق ثنائي النواة يعمل بسرعة 240 ميجاهرتز ، مما يجعله مرشحًا جيدًا للحوسبة المتكررة السريعة والمعقدة. لديه قدرات WiFi و Bluetooth لا أستخدمها في هذا المشروع.

حجم مجموعة التعليمات 32 بت. تعد الحوسبة بمتغيرات 16 و 32 بت سريعة جدًا مما يتيح إجراء عمليات حسابية دقيقة ، وهو أمر أساسي لغرض التكبير. في هذا التطبيق ، بالنسبة لشاشة 320 × 240 ، تتكون الصورة تقريبًا من 75000 بكسل ، يتم حساب كل منها باستخدام عملية تكرارية قد تصل إلى 100 مرة. قد يؤدي هذا إلى 7500000 عملية حسابية وحدوية ، كل منها عبارة عن أس ، أي عدة عمليات ضرب …

لذا فإن سرعة الحساب ضرورية هنا ، لكن الدقة أساسية. كلما قمت بالتكبير ، كلما كان حجم جزء المجموعة المراد عرضه أصغر. هذا يعني أن كل من 320 × 240 بكسل في الصورة تمثل رقمًا قريبًا جدًا من جيرانها. مع زيادة التكبير ، يزداد هذا القرب.

لكن الصور الفركتالية لها هذه الخاصية وهي أنها تظل دون تغيير عن طريق القياس. تظهر التفاصيل الصغيرة في كل مكان ولأي عامل قياس. يمكن العثور على الشكل الرئيسي لمجموعة Mandelbrot ، كما يظهر على الشاشة في الصورة أعلاه ، في مكان آخر في نسخة أصغر بكثير ، ويتم عرضها إذا قمت بالتكبير بشكل كافٍ (انظر في الفيديو). ولكن إذا كان فرق الإحداثيات بين اثنين من وحدات البكسل المجاورة صغيرًا جدًا لتمكين ESP32 من التعرف على اختلافهما في السلوك ، نظرًا لقلة الدقة ، لا يمكن إظهار التأثير الكسري …

للحصول على دقة جيدة ، يستخدم الكود عوامات ، تم ترميزها بـ 32 بت بواسطة ESP32. يتيح ذلك ما يصل إلى 6 أو 7 مستويات تكبير. سيؤدي استخدام الدقة المزدوجة (64 بت) إلى زيادة عمق التكبير هذا ، على حساب عمليات حسابية أبطأ ، وبالتالي أوقات أطول بين صورتين.

لجعلها مضاعفة الدقة ، ما عليك سوى تغيير جميع تكرارات "float" إلى "double" في الكود وتشغيل الكود. لقد صنعت مؤخرًا إصدارًا لشاشة أكبر (HVGA 480 × 320 بكسل): تستغرق 16 بتًا عوامات 3 ثوان لعرض الصورة ، وتستغرق المضاعفات ما بين 10 و 20 ثانية (3 إلى 6 مرات أطول) ولكنها تدعم أكثر من 15 مستوى تكبير. تُظهر الصورة الثالثة في هذا الفصل مستوى التكبير / التصغير 14 في أقصى الجزء الأيمن من مجموعة Mandelbrot.

كيفية توصيل الشاشة:

لقد استخدمت عرض SPI ، وتم تعيين المعلمات في ملف User_Setup.h (في مجلد مكتبة TFT_eSPI):

  • برنامج التشغيل: قم بإلغاء التعليق على برنامج التشغيل الصحيح لشاشتك. منجم كان #define RPI_ILI9486_DRIVER
  • أرقام التعريف الشخصي: انتقل إلى قسم ESP32 من الملف واختر

    • #define TFT_MISO 19
    • # تعريف TFT_MOSI 23
    • #define TFT_SCLK 18
    • #define TFT_CS 15 // Chip select control pin
    • #define TFT_DC 2 // دبوس التحكم في أوامر البيانات
    • #define TFT_RST 4 // إعادة تعيين الدبوس (يمكن الاتصال بـ RST pin)
    • #define TOUCH_CS 22 // Chip select pin (T_CS) من شاشة اللمس
  • الخطوط: لا حاجة لتغييرها
  • خيارات أخرى: لقد اخترت ما يلي

    • # تعريف SPI_FREQUENCY 20000000
    • # تعريف SPI_READ_FREQUENCY 20000000
    • #define SPI_TOUCH_FREQUENCY 2500000

تم التعليق على جميع الأسطر الأخرى من الملف.

قم بمعايرة قدرة اللمس للشاشة

إذا كان تحديد جزء الشاشة أو الزر غير دقيق ، أو حتى خاطئ تمامًا ، فقم بتشغيل رسم معايرة اللمس من مكتبة TFT_eSPI وانسخ / الصق في الكود الذي توفره المصفوفة (تأكد من استخدام القيمة الصحيحة لاتجاه العرض ، 1 أو 3 للمناظر الطبيعية).

الخطوة الثالثة: برنامج ESP32

برنامج ESP32
برنامج ESP32
برنامج ESP32
برنامج ESP32
برنامج ESP32
برنامج ESP32

يتم عرض الرمز على شاشة تعمل باللمس مقاس 320 × 240 TFT ، ويستخدم مكتبة TFT_eSPI. يقوم بحساب مجموعات Mandelbrot و Julia لعدة قيم أس ، ويسمح لك بتكبير مناطق الاهتمام لرؤية الجانب الكسوري (أي وجود نفس الهياكل عند كل تغيير في المقياس).

الكود المرفق هو نسخة للعرض 480 × 320. في هذا الإصدار ، يمكنك تغيير حجم الشاشة (العرض والارتفاع بالبكسل). تحدد مكتبة TFT_eSPI الاتصالات في ملف الإعداد (مرفق) والتي يجب وضعها في دليل المكتبة.

يبدأ الكود بعرض تعليمات التشغيل (انظر الصورة والفيديو)

يتم حجز معظم الشاشة لعرض الصور ، وتتوفر أزرار اللمس على الجانب الأيمن من الشاشة:

  • R: ينفذ "إعادة تعيين" ، أنا. ه. يعرض الصورة إلى أقصى حجم لها ،
  • U: يسمح لك "التراجع" بالعودة إلى الخطوة السابقة (إذا كانت المنطقة التي تم تكبيرها غير مثيرة للاهتمام ، يمكنك اختيار جزء آخر من الصورة لتكبيرها) ،
  • M أو J: يسمح لك بالتبديل من مجموعة Mandelbrot إلى مجموعة Julia والعكس صحيح.

تتغير تسميات بعض المفاتيح وفقًا للسياق: فهي تعرض الوظيفة التي سيتم تنفيذها عند الضغط عليها. لذلك إذا كنت تعرض حاليًا مجموعة Mandelbrot ، فإن المفتاح M / J يعرض J لأنه إذا ضغطت عليه فسوف تعرض مجموعة Julia (والعكس صحيح).

الأمر نفسه ينطبق على اختيار لوحة الألوان. نبدأ باللوحة الخضراء. يقترح المفتاح اللوحة التالية (الزرقاء). اللوحات هي: الأحمر والأخضر والأزرق والرمادي واللوحة 1 واللوحة 2 والعودة إلى الأحمر. الاختباران الأخيران عبارة عن اختبارات لوحة متعددة الألوان توفر مزيدًا من التباين ، مما يسمح برؤية بعض التفاصيل بشكل أفضل.

يسمح لك المفتاح الذي يحتوي على رقم باختيار الأس n ، في حلقة من 2 إلى 7 (والعودة إلى 2). وبنفس الروح ، فإنه يعرض 3 إذا كنت حاليًا في 2 …

أخيرًا ، عند عرض مجموعة Julia ، من الضروري اختيار قيمة الثابت c: يتيح لك المفتاح C القيام بذلك ، بفضل المحدد (انظر الصورة الثانية). يتم عرض قيمة هذا الثابت مع المجموعة.

النقر على الصورة يكبر حول النقطة المحددة. يتم عرض دائرة صغيرة عند النقطة التي تم لمسها ويبرز مستطيل المنطقة المكبرة من المجموعة.

تُظهر الصورة الثالثة أن أوقات الحوسبة تظل بين 0.8 و 1.2 ثانية مقابل 320 × 240 بكسل ، مما يجعلها مريحة في التكبير / التصغير والعرض. يصل إلى 3 ثوانٍ لـ 480 × 320 بكسل ، لكنه يوفر مزيدًا من التفاصيل.

الخطوة 4: شرح بعض الصور …

وأوضح بعض الصور …
وأوضح بعض الصور …
وأوضح بعض الصور …
وأوضح بعض الصور …
وأوضح بعض الصور …
وأوضح بعض الصور …

أكبر صورة هي مجموعة ماندلبروت المعروفة. تتراوح الأعداد المركبة المستخدمة في هذه الصورة من -2.1 إلى +0.7 في الإحداثي السيني ومن -1.2 إلى 1.2 في الإحداثي. إذا قمت بتكبير الجزء الأيسر جدًا من هذه الصورة الأولى ، فمن المحتمل أن تحصل أخيرًا على الصورة الثانية ، والتي تعرض إصدارًا أصغر من المجموعة الأصلية الموجودة في الطرف الأيسر من المجموعة. لكلتا الصورتين ، الأس ('n') يساوي 2: هذه هي القيمة المستخدمة عادةً لعرض مجموعات Mandelbrot.

إذا قمت بتغيير هذه القيمة إلى 3 (فقط اضغط على المفتاح الذي يقول 3) ، ستحصل على الصورة الثالثة. أحد الاختلافات الواضحة هو عامل التناظر: n = 2 تعطي تناسقًا محوريًا (أي أن المجموعة متناظرة مقابل المحور الأفقي المتوسط) ، ولكن مع n = 3 تصبح الصورة ثابتة بالتناوب بمقدار 120 درجة (ثلث 360 درجة ، الدوران عامل التماثل 3). ويحتفظ بخصائصه الكسورية ، والتي يمكنك التحقق منها عن طريق تكبير حواف الشكل الأسود.

الصورة الرابعة عبارة عن مجموعة جوليا تم الحصول عليها بعد تحديد قيمة معامل تساوي 0.414 في الإحداثي و 0.09 في الإحداثي. تم اختيار اللوحة الحمراء ، كما يمكن رؤيتها من خلال المفتاح الأخضر على اليمين (الأخضر ، كونه اللون التالي الذي سيتم اختياره). الصورة الخامسة تعرض نفس النوع من مجموعة جوليا ، والتي هي جزء وهمي أعلى من الثابت (0.358).

أتمنى أن تستمتع باللعب مع هذا البرنامج وأن تكون قادرًا على عرض صور كسورية لطيفة. لا تتردد في استكشاف مجموعات Mandelbrot و Julia واللعب باللوحات: فهي تساعد في تحديد بعض التفاصيل التي قد لا تكون مرئية مع تلك الأحادية اللون البسيطة. قد تكتشف حتى بعض المناظر الطبيعية الكسورية التي لم يرها أحد من قبل …

_

تريد اكتشاف المزيد من الصور كسورية؟ فقط انقر هنا أو استكشف الفن الكسوري أو حتى الفراكتل الأسكي. ربما ستجعلك هذه التعليمات ترغب في إنشاء مثل هذه الصور الرائعة …

مسابقة مصنوعة من الرياضيات
مسابقة مصنوعة من الرياضيات
مسابقة مصنوعة من الرياضيات
مسابقة مصنوعة من الرياضيات

الجائزة الثانية في مسابقة صنع باستخدام الرياضيات

موصى به: