קיבלתי 3 נק' X,Y ובניתי מהם משולש, אני מעוניין להגריל נקודה שתהיה בתוך המשולש הנוצר מ3 הנקודות.מצאתי אלגוריתם, שאומר לקחת נקודה שבטוח בחוץ לחבר קו בינה לבין הנקודה הנבדקת, אם היא עוברת כמות זוגית או אי זוגית של קוים במשולש אז יודעים אם הנקודה פנימית או חיצונית.
אז ניסיתי לבנות קו ישר באמצעות חישוב השיפוע, בין כל שתי נקודות, ובנייה באמצעות לולאה של כל הנקודות בדרך.
אבל אני לא ממש מצליח, ניסיתי לצייר את הנקודות כדי לראות אם בכלל אני בונה משולש נכון:
glPushMatrix(); glBegin(GL_POINTS); for (i = 0; i < abs(pt.x - pt.x) ; i ++) { a = 0; b = 1; temp = findLine(pt.x, pt.x, pt.y, pt.y); smallx = (pt.x > pt.x ? pt.x : pt.x); smally = (pt.y > pt.y ? pt.y : pt.y); bigx = (pt.x < pt.x ? pt.x : pt.x); bigy = (pt.y < pt.y ? pt.y : pt.y); if (temp > 0) starty = 0 - bigy; else starty = smally; glVertex2f(smallx + i,starty - (smallx + i) * temp); } glEnd(); glPopMatrix();
|
יש לי עוד 2 קטעי קוד דומים ל2 נקודות נוספות, הבעיה שהאלגוריתם לחישוב הנקודות משתנה בהתאם לנק', וזה צריך להיות אוניברסלי (ככה שאני אוכל לבנות אוטומטית משולש שלם, מכל 3 נקודות נתונות)
הפונקציה findLine מחזירה שיפוע בין שתי נקודות, באמצעות חלוקה של הפרש הY חלקי הפרש הX.
אשמח לכל עזרה בנושא.
תודה רבה, וסליחה על החפירה
