ועוד קצת ניג'וסים גאומטריים...

tseliot

New member
ועוד קצת ניג'וסים גאומטריים...

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

voguemaster

New member
הם מיושרים לצירים ?

או שהם יכולים להגיע בכל אוריינטציה ?
 

voguemaster

New member
אם אני מנחש נכון

מלבנים יהיו חופפים אם אורך הצלע הארוכה ואורך הצלע הקצרה שלהם יהיו שווים, לא ?
 

tseliot

New member
כנראה לא הסברתי את עצמי כמו שצריך

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

של מלבן אחד ואז לבדוק אם אחד מהקודקודים של המלבן השני נמצא ביניהם.
 
קל מדיי

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

tseliot

New member
זה משהו שחשבתי עליו כבר,

אבל לפעמים יש איזה אלגוריתם הרבה יותר אלגנטי שעושה את זה, כמו למשל האלגוריתם שנתנו לי פה לפני שבועיים שככשאלתי את השאלה הזו לגבי משולשים.
 

tseliot

New member
בבקשה...

http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=89&msgid=53979675
 

tseliot

New member
סליחה, זו השאלה, הנה התשובה:

http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=89&msgid=53996413
 
איכותי

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

tseliot

New member
אני בטוח שאחד מחברי הפורום

יכול להסביר את זה בלי בעיות. אם אתה שואל אותי, זה איכשהו מסתמך על הייצוג הזה של משוואה לינארית: ax+by+c=0 ולא על mx+n=y
 

itaym02

New member
הםםם

mx+ny+c=z אתה יכול להריץ את כל הנקודות של מלבן אחד במשוואות של שני המלבנים ולבדוק אם אתה מקבל את אותה תוצאה = מתנגשים. בטח יש משהו יותר יעיל... מה יש לך בדו-מימד, נראה לי שזה יחסית פשוט להמיר לתלת מימד אם תתייחס כל פעם רק לצלע אחת, אבל אלו רק מחשבות.
 

Metheny

New member
הצעה

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

selalerer

New member
דווקא לא נכון.

תנסה לפתור מע' משוואות לינארית עם שני משוואות כאשר הקווים הם אחד על השני
לא אותה תוצאה כמו קווים שלא נפגשים.
 

Metheny

New member
...

"כמובן שיש מקרי קצה, כמו למשל אם הם משיקים באחד הקודקודים וכדו'."
 
למעלה