Codebox: חקור רקורסיה עם עיבוד - 💡 Fix My Ideas

Codebox: חקור רקורסיה עם עיבוד

Codebox: חקור רקורסיה עם עיבוד


המחבר: Ethan Holmes, 2019

רקורסיה היא טכניקת תכנות חשובה המלווה את עצמה למגוון תחומים, לא פחות מכך היא יצירת דימויים חזותיים מעניינים. בקיצור, רקורסיה היא טכניקה לשבירת בעיה מורכבת לגרסאות קטנות ופשוטות יותר של עצמה (זה נקרא "הצעד רקורסיבי") עד שהבעיה היא טריוויאלית לפתור (במקרה טריוויאלי זה נקרא "מקרה הבסיס"). זה קודקבוק מגוון רחב של סקיצות שיעזרו לך לחקור את זה כיף וטכניקה מעניינת באמצעות מושגים גיאומטריים פשוטים.

אמנים רבים השתמשו בנושאים רקורסיביים בעבודתם, ובמיוחד אצל מ. אשר ורנה מגריט. זה סקיצה הראשונה מראה כיצד ליצור תמונות בסגנון של פיט מונדריאן, אשר ידוע בעיקר עבור יצירות של מלבנים צבעוניים.

התוכנית הבאה משתמשת רקורסיה ליצירת פו-מונדריאן. מקרה הבסיס הוא פשוט: כל מה שאתה עושה הוא לצייר מלבן מלא עם גבול שחור עבה; הצבע של המלבן נבחר מתוך קבוצה קטנה של צבעים ראשוניים (אדום, לבן, צהוב, וכו '). הצעד רקורסיבית היא לשבור את המלבן הזה (וכל המלבנים הבאים) לתוך 4 מלבנים קטנים יותר על ידי בחירת נקודה אקראית בפנים שלה. הדמות הבאה צריכה לתת לך מושג איך זה עובד:

הפלט ייראה בערך כך:

לבסוף, הנה סקיצה, mondrian.pde:

ה piet () פונקציה היא הלב של התוכנית, ומדגים כיצד תוכניות רקורסיבית ביותר לעבוד. הנה זה:

/ / לצייר תמונה בהשראת מונדריאן באמצעות pic reduction ריק (int x0, int y0, int x1, int y1, int N) {אם (N == 0) {/ מקרה בסיס - לצייר מלבן צבעוני עם עבה הגבול השחור int sw = 3; / / זהו רוחב הקו עבור צבע הגבול של המלבן c [] = # # ff0000, # 00ff00, # 0000ff, # ffff00, #ffffff}; // מונדריאן צבע palatte מילוי (c [int (אקראית (c.length))]; strokeWeight (sw); rect (x0, y0, x1-x0-sw, y1-y0-sw); } אחר {/ / צעד רקורסיבי - לשבור את המלבן הנוכחי לתוך 4 מלבנים אקראיים חדשים int i = int (אקראי (x0, x1)); int j = int (אקראי (y0, y1)); piet (x0, y0, i, j, N-1); // piet השמאלי העליון מלבן (i, y0, x1, j, N-1); // piet הימני העליון מלבן (x0, j, i, y1, N-1); / / pit שמאלה שמאלה תחתונה (i, j, x1, y1, N-1); // מלבן ימני נמוך}}

הפונקציה מקבלת 5 טיעונים: הקואורדינטות של פינה השמאלית העליונה של מלבן (x0 ו- y0), הקואורדינטות של הפינה הימנית התחתונה (x1 ו- x2), והעומק הרקורסיבי הנוכחי (N). הפונקציה עושה שני דברים בסיסיים. ראשית, הוא בודק אם הוא הגיע ל"מקרה הבסיס ", כאשר N = 0. אם כן, אז כל מה שהוא עושה הוא לצייר מלבן בצבע אקראי מהצבע הבסיסי של מונדריאן של צבעים (אדום, תאוות בצע, כחול, צהוב , ולבן). אם זה לא מקרה הבסיס, אז זה בוחר נקודה אקראית (i, j) בתוך מלבן הנוכחי, ולאחר מכן שיחות piet () 4 פעמים נוספות, עובר בקואורדינטות שונות המרכיבות את 4 מלבני הפנים החדשים. זה "לחלק ולכבוש" גישה של בעל פונקציה שמכנה את עצמה היא סימן ההיכר של רקורסיה.

תהליכים רקורסיביים פשוטים משמשים לעתים קרובות ליצירת אובייקטים בעלי מראה טבעי. לדוגמה, אנו יכולים ליצור צמח טבעי מחפש באמצעות תהליך רקורסיבית פשוטה שבה כל "צמח" מתחיל כקו ישר. קו זה מוחלף ב"סניף "חדש, המורכב מהקו המקורי בתוספת 3-4 סניפים חדשים המתחלפים. (מספר הסניפים המדויק נקבע על ידי משתנה שניתן לקבוע). תהליך זה מיושם רקורסיבית עבור כל ענף חדש, עד עומק שתציין. הדמות הבאה ממחישה את הרעיון הבסיסי:

הקווים מיוצגים כווקטורים. וקטור מורכב מנקודת מוצא המוגדרת על ידי המשתנים x ו- y, אורך המוגדר על ידי המשתנה r, וזווית המוגדרת על ידי המשתנה theta. האיור הבא מראה כיצד משתנים אלה הם:

נתון זה ממחיש כמה מן "צמחים" פשוט שנוצר עם תהליך בסיסי זה:

הנה סקיצה, plant.pde:

לבסוף, אני אהיה רשלנית בלי להראות את עקומת השלג, אחת הדמויות המפורסמות ביותר הידועות. במקרה הבסיס הוא משולש פשוט. כל קצה מוחלף על ידי קבוצה חדשה של 4 מקטעי שורה שהם 1/3 אורך הקו המקורי. לאחר מכן מחליפים כל אחד מהקטעים החדשים הללו בקטע חדש של 4 שורות (צעד רקורסיבי זה). הדמות הבאה צריכה לתת לך את הרעיון הבסיסי של התהליך:

התוצאות נראות כך:

הנה סקיצה, snowflake.pde. שים לב כי תצטרך את ספריית CONTROLP5 תרמו לשנות את העומק רקורסיבית (המכונה לעתים קרובות N) כדי לראות איך זה משפיע על התמונה. (למרבה הצער, הייתי צריך להגביל את עומק רקורסיבית מקסימלית ל 6, ולא אינסוף, שכן הספרייה אינה תומכת כרגע slbars כי להרחיב מעבר למסך הצג שלך אל הרחוק של היקום הידוע.)

עוד: בדוק את כל העמודות Codebox

בסככת היוצרים:


תחילת העבודה עם עיבוד למד את תכנות המחשב בדרך הקלה באמצעות עיבוד, שפה פשוטה המאפשרת לך להשתמש בקוד כדי ליצור שרטוטים, אנימציה וגרפיקה אינטראקטיבית. קורסי תכנות מתחילים בדרך כלל בתיאוריה, אבל הספר הזה מאפשר לך לקפוץ ישר לתוך פרויקטים יצירתיים ומהנים. זה אידיאלי עבור כל מי שרוצה ללמוד תכנות בסיסי, ומשמש מבוא פשוטה גרפיקה לאנשים עם כמה כישורי התכנות.



אתה עשוי להתעניין

עולם פתוח: שיחה עם וויל הולמן

עולם פתוח: שיחה עם וויל הולמן


תענוגות הנשגב של "Makecation"

תענוגות הנשגב של "Makecation"


מתמטיקה יום שני: מכונות שיש

מתמטיקה יום שני: מכונות שיש


טיפים של השבוע: Big Clamps בר, תאורה משקפי בטיחות שלך, מחזיקי לגו כבל

טיפים של השבוע: Big Clamps בר, תאורה משקפי בטיחות שלך, מחזיקי לגו כבל