חישוב מרובע
נוסחה, קוד, ויזואליזציה: שלוש דרכים להבין את אותו מושג
שטח מרובע — שלושה ייצוגים של אותו רעיון
# Step 1: cross-multiply pairs s1 = x1*y2 - x2*y1 s2 = x2*y3 - x3*y2 s3 = x3*y4 - x4*y3 s4 = x4*y1 - x1*y4 # Step 2: sum all pairs total = s1 + s2 + s3 + s4 # Step 3: half the absolute value area = abs(total) / 2
שימו לב: הצבעים עקביים — צלע a בטורקיז בציור, בנוסחה ובקוד. אלכסון AC בוורוד. המיפוי הזה הוא מנגנון הלמידה — לא כל ייצוג בנפרד, אלא החיבורים ביניהם.
מיפוי בין ייצוגים
כל שורה היא אותו דבר בשלוש צורות שונות:
| Math | Python Code | Visual (SVG) | Color |
|---|---|---|---|
| a (AB) | dist(A, B) |
Bottom edge | |
| b (BC) | dist(B, C) |
Right edge | |
| c (CD) | dist(C, D) |
Top edge | |
| d (DA) | dist(D, A) |
Left edge | |
| AC | dist(A, C) |
Rose dashed diagonal | |
| BD | dist(B, D) |
Orange dashed diagonal | |
| A (area) | get_area() |
Shaded interior region | |
| P (perimeter) | get_perimeter() |
Sum of all four edges |
מחשבון אינטראקטיבי
הזינו קואורדינטות של 4 קודקודים (בסדר נגד כיוון השעון) וראו שטח, היקף, וסיווג בזמן אמת:
משפחת המרובעים — היררכיית סיווג
כל מרובע מיוחד הוא מקרה פרטי של מרובע כללי יותר. ריבוע הוא גם מלבן, גם מעוין, גם מקבילית, וגם טרפז:
טבלת השוואת תכונות
| Type | Sides | Angles | Diagonals |
|---|---|---|---|
| Square | All 4 equal | All 90° | Equal, bisect each other at 90° |
| Rectangle | Opposite pairs equal | All 90° | Equal, bisect each other |
| Rhombus | All 4 equal | Opposite pairs equal | Bisect each other at 90° |
| Parallelogram | Opposite pairs equal | Opposite pairs equal | Bisect each other |
| Trapezoid | 1 pair of parallel sides | Co-interior angles = 180° | Generally unequal |
| Kite | 2 adjacent pairs equal | 1 pair of opposite angles equal | One bisects the other at 90° |
| General | No special relation | Sum = 360° | No special relation |
קוד Python מלא
הקוד המלא נמצא בקובץ quadrilateral_calculator.py — הוא כולל חישוב מקואורדינטות, סיווג אוטומטי, ויזואליזציה ותפריט אינטראקטיבי.
# Shoelace area (from the full class) def get_area(self): pts = list(self.vertices) # [(x1,y1), (x2,y2), (x3,y3), (x4,y4)] n = len(pts) area = 0 for i in range(n): j = (i + 1) % n area += pts[i][0] * pts[j][1] # x_i * y_{i+1} area -= pts[j][0] * pts[i][1] # x_{i+1} * y_i return round(abs(area) / 2, 4) # Classification logic (from the full class) def classify(self, tolerance=0.1): s = self.get_sides() a = self.get_angles() all_sides_equal = abs(s['AB']-s['BC']) < tolerance and ... all_right = all(abs(ang-90) < tolerance for ang in ...) if all_sides_equal and all_right: return "Square" elif opp_sides_equal and all_right: return "Rectangle" elif all_sides_equal and opp_angles_equal: return "Rhombus" elif opp_sides_equal and opp_angles_equal: return "Parallelogram" elif has_parallel_pair: return "Trapezoid" elif adj_equal: return "Kite" else: return "General Quadrilateral" # Run: python quadrilateral_calculator.py
זכרו: הקוד הוא תרגום של הנוסחה, לא מקור ההבנה. מישהו היה צריך לדעת את נוסחת שרוך הנעל ואת כללי הסיווג כדי לכתוב אותו. הערך של הקוד: פירוק הנוסחה לשלבים ניתנים לעקיבה, אימות עם ערכים אמיתיים, ואיתור שגיאות.