פורסם 2012 באפריל 613 שנים יש לי 2 מקטעים, כל מקטע מורכב מ-2 נק' (אחת שמאלית ואחת ימנית) ולכל נק' יש כמובן קורדינטת X וקורדינטת Y ובין ביתר מתודה של getX ו-setYמה שאני צריך זה למצוא את נק' חפיפה (אם יש כמובן) בין 2 המקטעים רק עפ"י קורדינת ה-Xאשמח לעזרה.
פורסם 2012 באפריל 613 שנים מתמטיקה של כיתה י', זוכר?http://www.sikumuna.co.il/wiki/%D7%9E%D7%A9%D7%95%D7%95%D7%90%D7%AA_%D7%94%D7%99%D7%A9%D7%A8http://www.sikumuna.co.il/wiki/%D7%A0%D7%A7%D7%95%D7%93%D7%AA_%D7%97%D7%99%D7%AA%D7%95%D7%9A_%D7%A9%D7%9C_%D7%A9%D7%A0%D7%99_%D7%99%D7%A9%D7%A8%D7%99%D7%9D
פורסם 2012 באפריל 813 שנים בכל מקרה, זו גאומטריה פשוטה. אם שני המקטעים הם לא על אותו ישר, אז יש לשני הישרים שלהם לכל היותר נקודת חיתוך אחת - פשוט צריך למצוא אותה ולבדוק את היא יושבת על המקטעים או מחוץ להם.אם הם כן על אותו ישר, אז צריך למצוא את טווח ה-x-ים וה-y-ים שמשותף להם.
פורסם 2012 באפריל 813 שנים אז זה אפילו יותר קל. אם לשניהם אין אותה קואורדינטת Y - אז הם מקבילים, ולכן אין חיתוך. אחרת, אתה צריך לבדוק אם יש חפיפה בתחומי ה-X-ים.
פורסם 2012 באפריל 813 שנים תשווה בין הנקודה השמאלית של קטע אחד והנקודה הימנית של קטע אחר, ותחשוב מה כל תוצאה אפשרית אומרת.אם אתה עדיין לא מבין, קח דף ועט, צייר את שני הקטעים בכל מיני דרכים (עם חפיפה, בלי חפיפה, שאחד מהם מכיל את השני...) ותחשוב מה היחס בין הנקודות בכל אחד מהמקרים.
פורסם 2012 באפריל 1113 שנים מחבר רשמתי משהו אבל הוא עובד באופן חלקי, אשמח לעזרה: public double overlap (Segment1 other) { if (_poRight.getX() < other._poLeft.getX()) //all the reference segment in the right side { if (other._poLeft.isRight(_poRight)) { return 0; } } else if (other._poLeft.getX() <= _poLeft.getX() && other._poRight.getX() >= _poRight.getX()) { return _poRight.getX() - _poLeft.getX(); } else if (_poLeft.getX() <= other._poLeft.getX() && _poRight.getX() >= other._poRight.getX()) { return other._poRight.getX() - other._poLeft.getX(); } else if (_poLeft.getX() <= other._poLeft.getX() && _poRight.getX() <= other._poRight.getX()) { return _poRight.getX() - other._poLeft.getX(); } else if (_poLeft.getX() >= other._poLeft.getX() && _poRight.getX() >= other._poRight.getX()) { return other._poRight.getX() - _poLeft.getX(); } return 0; }
פורסם 2012 באפריל 1113 שנים יש דרך יותר פשוטה הקצה השמאלי של החיתוך הוא המקסימום של הקצוות השמאליים של שני הקטעים. הקצה הימני הוא המינימום של הקצוות הימניים. אם יוצא שהקצה הימני קטן מהקצה השמאלי, אז אין חיתוך כלל.
פורסם 2012 באפריל 1213 שנים מחבר אפשר בבקשה לראות את הקוד של מה שאתה מתכוון ? לא ממש הולך לי בשיטה הזו
פורסם 2012 באפריל 1213 שנים public double overlap (Segment1 other){ double left = Math.max(_poLeft.getX(), other._poLeft.getX()); double right = Math.min(_poRight.getX(), other._poRight.getX()); if (right > left) { return right-left; } else { return 0; }}את ה-if האחרון אפשר גם להחליף בזה:return Math.max(right-left, 0);
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.