פורסם 2015 באוקטובר 1610 שנים שלום אני רוצה לכתוב פונקציה קטנה שמציירת חץ בצורה תוכנתית, כשהפונקציה מקבלת כקלט 2 נקודות P1 ו-P2, ואז היא תמתח קו בינן, ותוסיף עוד שני קווים עבור ראש החץ. (ראש החץ הוא בנקודה השנייה - P2) כך שהחץ יראה לדוגמא כך: לשם הפשטות נניח שבין הקו העיקרי של החץ לבין 2 הקוים של ראש החץ, יש זוית של 30 מעלות (עם כל אחד מהם). (אבל זה יכול להשתנות בעתיד, אז עדיף שהמספר 30 יופיע כקבוע באלגוריתם, כך שאוכל לשחק עם זה לפי הצורך) כמו כן האורך של הקווים של ראש החץ, הוא קבוע, למשל 10 פיקסלים, ולא משתנה בהתאם לאורך החץ. איך אני עושה את זה? תניחו שיש לנו את הפונקציה ()DrawLine שמקבלת כקלט 2 נקודות, ומציירת קו בינהן, אז כעת בעצם נשאר לי להשתמש בה 3 פעמים, אחרי שאחשב את 2 הנקודות הנוספות עבור ראש החץ. מהמעט שאני זוכר מחטיבת ביניים, זה בטח עם ()sin ו-()cos, רק שאני חייב להודות שאני לא זוכר כלום.. תודה למי שכן זוכר.. נערך 2015 באוקטובר 1610 שנים על-ידי card
פורסם 2015 באוקטובר 1610 שנים היי,באיזו שפת תכנות מדובר? C#?יש לך פה דוגמה לכך:http://stackoverflow.com/questions/3010803/draw-arrow-on-line-algorithm
פורסם 2015 באוקטובר 1610 שנים מחבר היהשפה לא משנה, כי מדובר כאן על אלגוריתם.את העמוד שהבאת ב-StackOverflow אכן מצאתי בגוגל עוד לפני שפתחתי כאן את השאלה,הבעיה שהוא לא ממש מסביר שם את החישוב, ולכן שאלתי כאן.אודה למי שיכול לתת תשובה..
פורסם 2015 באוקטובר 1610 שנים בוא נתחיל בלפרט מה הוא מקבל בפונקציה, נשאיר את Pen, Graphics בצד. הוא מקבל את נקודה, P, אשר היא נקודת המוצא של ראש החץ הוא מקבל dx וdy שהם delta x וdelta y, כלומר ההפרש מנקודה X וההפרש מנקודה Y. הוא יצר שני קבועים const double cos = 0.866; const double sin = 0.500; כאשר זה בעצם אומר כי הוא מדבר על זווית של 30 מעלות. מה שאומר שהוא רוצה שהקווים שיצאו מנקודת הסיום יהיה בסטיה של 30 מעלות. אנחנו רוצים למצוא את 2 הנקודות הרלוונטיות לנו ב30 מעלות וב-30 מעלות ולכן נחשב את זה על ידי הנוסחא הבאה: [ATTACH=CONFIG]9779[/ATTACH] עד כאן הכל ברור, אני מקווה ולכן נחשב פעם אחת עבור 30 מעלות, ופעם אחת עבור -30 מעלות. ולאחר מכן נצייר. כמובן שלא לשכוח להוסיף את הערכים של Point P אחרת מה שיקרה זה שראש החץ יצא לנו לא מהנקודה הרצויה
פורסם 2015 באוקטובר 1610 שנים יותר פשוט בצורה ווקטורית.נניח p1 ו p2 הם הנקודות של ההתחלה והסוף של החץ.אז קודם כל עלייך למצוא את ווקטור הכיוון של החץ, נניח ll = (p2-p1).normalize();עכשיו עלייך למצוא את הכיוון הנורמל לכיוון החץ n. (בגדול אתה צריך לסובב את l ב90 מעלות).שתי הנקודות של החץ q1, q2 הם הנקודות שאתה צריך למתוח קו מP2 אליהם.q1 = p2-l*distance+n*distanceq2 = p2-l*distance+n*distanceזה למשל ייתן לך נקודות במרחק שורש שתיים כפול distance בזווית של 45 מעלות.בשביל לקבל את הנקודות במרחק DISTANCE מ p2 תצטרך לחלק בשורש שתיים.בשביל לקבל זווית אחרת מ45 מעלות תצטרך לכפול את n בsin ואת l בcos (ואז גם לא תצטרך לחלק בשורש שתיים).שים לב ש1/sqrt(2) = sin(45 degrees) = cos(45 degrees)כך שלמעשה בשביל למצוא את הקודקודים של החצים במרחק distance ובזווית a תצטרך לחשב:q1 = p2-l*distance*cos(a)+n*distance*sin(a)q2 = p2-l*distance*cos(a)-n*distance*sin(a) נערך 2015 באוקטובר 1610 שנים על-ידי Sargon
פורסם 2015 באוקטובר 1710 שנים מחבר תודה לשניכםהדרך של HajB נראית לי יותר פשוטה..העניין הוא שה-30 מעלות המדוברות, צריכות להיות ביחס לזוית של הקו הראשוני לא?הרי אם אני אחשב פשוט עם 30 מעלות, זה יצייר לי את הקווים לפי 30 מעלות (ומינוס 30 מעלות) כזוית ביחס למישור ה-X,ולא ביחס לקו הראשוני של החץ.. נערך 2015 באוקטובר 1710 שנים על-ידי card
פורסם 2015 באוקטובר 1710 שנים מחבר אוקיי הצלחתי לעשות את זהזה מסביר בצורה פשוטה, למי ששכח את החומר (כמוני):http://math.stackexchange.com/questions/143932/calculate-point-given-x-y-angle-and-distanceועבור חישוב הזוית היחסית לקו הראשי של החץ, השתמשתי בזה:http://math.stackexchange.com/questions/394063/find-the-angle-between-the-2-points-50-573-210-265-and-117-833-80-550(אם לא משתמשים בחישוב שבלינק השני, אז שני הקוים של ראש החץ יוצאים ביחס לציר ה-X, ולא ביחס לקו הראשי של החץ)תודה לכולם
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.