פורסם 2008 באוגוסט 117 שנים אבא שלי ביקש ממני תוכנה שתחשב שטח של מצולעים(הוא עובד עם רכיבים בצורות שונות והוא צריך לחשב את השטח) אבל אין לי מושג איך לעשות את זה.שתי שאלות עכשיו:1)מישהו מכיר תוכנה כזאת(חינמית)2) בכל מקרה אני הייתי רוצה לנסות לעשות את התוכנה בעצמי, מישהו יכול בבקשה לתת לי את האלגוריתם?אין לי מושג מה לעשות
פורסם 2008 באוגוסט 117 שנים תבדוק את הלינקים האלה, אולי יש שם מידע שיעזור לך.http://mathforum.org/library/drmath/sets/select/dm_area_irreg.htmlhttp://www.onlineconversion.com/shape_area.htmhttp://flashandmath.com/simplemachinesforum/index.php?topic=66.0
פורסם 2008 באוגוסט 117 שנים באופן עקרוני אתה פשוט צריך לקחת 3 נקודות עוקבות בכל פעם ולחשב את שטח המשולש(זה פשוט)אחריי שחישבת משולש אתה חותך אותו מהמצולע כך שאם קודם היה לך מצולע בעל N צלעות, עכשיו יש לך מצולע בעל N-1 צלעותאתה ממשיך ככה עד שנשאר לך משולש
פורסם 2008 באוגוסט 117 שנים מחבר כן, אבל הבעיה המרכזית שלי היא איך להעריך שטח מסויים כמשולש ולחתוך אותו
פורסם 2008 באוגוסט 117 שנים מה שהבנתי מהמעט שקראתי: סדר את הנתונים בצורת מערך אורכי הצלעות ומערך הזויות בינהם. קח שתי צלעות וזווית וחשב את שטח המשולש הם יוצרים. שמור את הנתונים של הצלע המודמה של אותו משולש, בזוג מערכים נפרד (ככה שאחרי שעוברים על כל הנקודות בצורה מקבלים צורה בעלת פחות צלעות). תפעיל את האלגוריתם בצורה רקורסיבית על המערכים החדשים, עד שמגיעים למצולע עם 3 צלעות, שאותו יודעים לחשב. השקעתי והוספתי תמונה להמחשה המצולע הנתון מסומן בשחור. באיטרציה הראשונה השטחים של המשולשים מסומנים בורוד שמתחזק בסדר עולה. המשולש המסומן בירוק הוא הצורה הנשלחת בקריאה הרקורסיבית של האלגוריתם. שים לב שלמשולש השני (משולש 3-4-5) יש זווית גדולה מ 180, לכן סינוס הזווית יהיה שלילי, ולכן השטח הזה יוחסר מהשטח המחושב בסופו של דבר (שטח משולש מחושב כך: a*b*sin©/2 כש-a ו-b הם צלעות סמוכות ו-c הוא הזווית שבינהן). [attachment deleted by admin]
פורסם 2008 באוגוסט 117 שנים מחבר תודה אני אנסה לעשות את זה.עכשיו, מישהו יכול לתת לי תוכנה שעושה את זה? כי אם אני אעשה את זה זה לא יהיה כ"כ יעיל ונוח לשימוש, וצריך תוכנה טובה.
פורסם 2008 באוגוסט 217 שנים זהירות! לא כל אלגוריתם מתחשב במצולעים קעורים (concave) ובמקרי קצה מעצבנים.מה שאתה רוצה זה לעשות טריאנגולציה בשלב ראשון (http://en.wikipedia.org/wiki/Polygon_triangulation) ואז לחשב את המשולשים.תוודא ששיטת הטריאנגולציה שלך מתמודדת עם מקרים כמו פוליגונים קעורים, נקודות קולינאריות וכו.יש גם ספריות חופשיות שיעשו את הכל בשבילך. CGAL ו-opencv. הן יפתרו את הבעיה בצורה מדוייקת ללא באגים, ויתחשבו גם במקרי קצה.
פורסם 2008 באוגוסט 617 שנים קוד שכתבתי בזמנו ב C#- public float Area { get { float area = 0; for (int i = 1; i + 1 < _points.Count; i++) { float x1 = _points[i].X - _points[0].X; float y1 = _points[i].Y - _points[0].Y; float x2 = _points[i + 1].X - _points[0].X; float y2 = _points[i + 1].Y - _points[0].Y; float cross = x1 * y2 - x2 * y1; area += cross; } return Math.Abs(area / 2.0f); } }
פורסם 2008 באוגוסט 717 שנים אין לי זמן להכנס לזה, אבל נראה לי שזה לא יעבוד עבור מצולעים קעורים מסובכים.לדוגמא ספירלה: http://www.ics.uci.edu/~eppstein/161/theseus.gif
פורסם 2008 באוגוסט 817 שנים אין לי זמן להכנס לזה, אבל נראה לי שזה לא יעבוד עבור מצולעים קעורים מסובכים.לדוגמא ספירלה: http://www.ics.uci.edu/~eppstein/161/theseus.gifעבור Concaves רגילים זה עובד.עבור הצורות שהצגת, אמנם לא בדקתי באופן ספציפי.ואמנם ייתכן שיש שגיאות דיוק (אם כי מינוריות)אבל העקרון הגיאומטרי עדין תקף בכל רמת סיבוך.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.