עזרה במציאת אלגוריתם - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה במציאת אלגוריתם


sharpi

Recommended Posts

ישנו מסלול (כלשהו) וישנו כדור שאני רוצה שיצמד לקו(כאילו זה משטח שהוא נע עליו)

כיצד אני לגרום לכדור להיצמד תמיד לקו.(מצורפת תמונה.) מבחינת התזוזות.

יש לציין כי יש לי מתודות שיכולות לזהות התנגשות עם הקו.

למשל בתמונה המצורפת. הכדור ינוע ימינה ירד כשיש בקעה ויעלה למעלהימשיך במסלול (כאילו זה קיר שהוא מתפס עליו).

תודה

[attachment deleted by admin]

קישור לתוכן
שתף באתרים אחרים

איזה מידע יש לך על הקו בדיוק? האם אתה יכול לזהות רק התנגשויות (כלומר יש פונקציה שמחזירה boolean שמציין התנגשות), או שיש לך יותר מידע מזה (כמו מקום ההתנגשות, או אפילו מידע על מיקום הקו)?

קישור לתוכן
שתף באתרים אחרים

קשה להבין מהנתונים שלך עם מה אתה יכול לעבוד, אבל ברובוטיקה הבעיה של עקיבה אחרי קיר היא בעיה מוכרת שיש לה כבר המוני פתרונות בהתאם ל-framework שלך.

המתודה הזו נקראת בד"כ בספרות follow-wall אז אם תריץ חיפוש על זה בגוגל או אפילו משהו כמו "wall following robot" אתה תמצא חומר קריאה לשנה לפחות.

אם אתה רוצה עזרה יותר ספציפית, אז צריך להשלים את הנתונים ששניצל ביקש פה מעלי...

קישור לתוכן
שתף באתרים אחרים

אני מייצר את הקו אז אני יודע את מיקום הקו.

אני יכול לזהות התנגשות של הכדור עם הקו (ע"י כך שאני בודק קורדינאטות מסביב לכדור) ולזהות שזה לא הכדור אלא קיר (או קו)

זה המידע שיש לי

קישור לתוכן
שתף באתרים אחרים

אתה רוצה ליצור אנימציה של כדור שעוקב אחרי הקו?

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

http://he.wikibooks.org/wiki/%D7%9E%D7%AA%D7%9E%D7%98%D7%99%D7%A7%D7%94_%D7%AA%D7%99%D7%9B%D7%95%D7%A0%D7%99%D7%AA/%D7%94%D7%A0%D7%93%D7%A1%D7%94_%D7%90%D7%A0%D7%9C%D7%99%D7%98%D7%99%D7%AA/%D7%97%D7%9C%D7%95%D7%A7%D7%AA_%D7%90%D7%9E%D7%A6%D7%A2_%D7%91%D7%99%D7%97%D7%A1

קישור לתוכן
שתף באתרים אחרים

העניין הוא שהקו יכול להיות עקום (כמו בציור שצירפתי) ואז איך אתה עוקב אחריו.

בא נאמר שאת הקו מצייר המתמש כרצונו ואני אמור להיצמד לקו

קישור לתוכן
שתף באתרים אחרים

קווים - קורדינאטצת התחלה וסיום

מעוקלים - מצייר בעזרת פונקציה שמציירת קשת (כך שאני יכול ללשמור את כל הנתונים של ציור קשת)

קישור לתוכן
שתף באתרים אחרים

הכדור אמור ללכת על הקו (כאילו זה זטח שהוא מתגלגל עליו ועולה למעלה - עוקבב אחרי הקו בצמוד לו - כמו רכבת הרים)

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

קישור לתוכן
שתף באתרים אחרים

כדי לבצע אנימציה אתה צריך להתחשב בזמן בין פריים לפריים כדי שלא יהיו קפיצות או קירטועים. השימוש בזמן צריך להיות באופן הבא - תבדוק כמה זמן עבר מאז שהכדור עלה לראשונה על קו/מקטע כלשהו. תחשב את המיקום של הכדור לפי הזמן שעבר - פונקציה אחת שמחזירה את שיעור הX כתלות בזמן, ופונקציה שניה שמחזירה את שיעור הY כתלות בזמן שעבר. אחרי החישוב - תמקם את הכדור במיקום החדש, תצייר אותו ותמשיך לחישוב הפריים הבא.

קישור לתוכן
שתף באתרים אחרים

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

נניח שבזמן 0 הכדור נמצא בתחילת המסלול. ונניח שאני רוצה למקם את הכדור ב זמן 5 איך בדיוק אני יכול לחשב את מיקום הכדור החדש מיקום x ו y זו בדיוק השאלה שלי.

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

אם תוכל לתת דוגמא זה יעזור.

קישור לתוכן
שתף באתרים אחרים

זה דורש ניתוח מתמטי כלשהו של הפונקציות שאתה יכול לקבל.

תביא פונקציה מסויימת, ונראה איך מנתחים אותה.

אני יכול להביא לך דוגמא לעיגול -

נניח שמישהו צייר לך מעגל עם מרכז ב- (x0,y0), ורדיוס R, אתה יכול לחשב את המיקום בדרך הבאה:

y = y0 + sin(X) * r
x = x0 + cos(X) * r

כאשר X הוא :

X = 2 * PI * ARC_SIZE * time / MAX_TIME + ARC_OFFSET

כאשר ARC_SIZE הוא מספר בין 1 ל- 0 שמציין את גודל הקשת (1 זה כל העיגול, חצי זה חצי עיגול), MAX_TIME זה הזמן שאתה רוצה שהוא יבלה על הקשת וה- ARC_OFFSET זה מספר ברדיאנים שמציין את הזיות של הקשת.

לדוגמא, אתה רוצה שהכדור יהיה במשך דקה (60 שניות) במעגל, ואתה רוצה שהוא יעשה רק חצי סיבוב (ברביעים הרביעי והראשון), הנוסחא תהייה:


PI * time / 60 + 3 / 4 * PI

הפרמטר שאתה נותן לSIN ולCOS צריך להיות תלוי ב- T ותלוי במשך הזמן שהוא יהיה שם:

הערה: ניתן לחשב את ה- sin וה cos בדרכים יעילות יותר, אבל זה לא כל כך חשוב.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...