חישוב מרובע

נוסחה, קוד, ויזואליזציה: שלוש דרכים להבין את אותו מושג

שטח מרובע — שלושה ייצוגים של אותו רעיון

ויזואלי — "אני רואה את זה"
a = 6 b c d AC BD A B C D A = 17.5
נוסחה — "אני מבין את היחס"
שטח (נוסחת שרוך הנעל)
A = ½|x₁(y₂y₄) + x₂(y₃y₁) + x₃(y₄y₂) + x₄(y₁y₃)|
היקף
P = a + b + c + d
סכום זוויות פנימיות
∠A + ∠B + ∠C + ∠D = 360°
קוד מפורק — "אני עוקב אחרי השלבים"
# 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
כל שורה = פעולה אחת בלבד
בשפה פשוטה (ללא קוד)
1. בכל קודקוד, הכפילו x שלו ב-y של השכן הבא, ולהפך. חסרו את התוצאות.
2. חברו את כל ארבעת ההפרשים שקיבלתם. קחו ערך מוחלט.
3. חלקו ב-2 — וזהו השטח! A = ½|total|

שימו לב: הצבעים עקביים — צלע 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 קודקודים (בסדר נגד כיוון השעון) וראו שטח, היקף, וסיווג בזמן אמת:

ויזואלי
חישוב שלב אחרי שלב (שרוך הנעל)

משפחת המרובעים — היררכיית סיווג

כל מרובע מיוחד הוא מקרה פרטי של מרובע כללי יותר. ריבוע הוא גם מלבן, גם מעוין, גם מקבילית, וגם טרפז:

Quadrilateral Trapezoid Kite Parallelogram Rectangle Rhombus Square
ריבוע
4 equal sides + 4 right angles
מלבן
Opposite sides equal + 4 right angles
מעוין
4 equal sides + opposite angles equal
מקבילית
2 pairs of parallel sides
טרפז
Exactly 1 pair of parallel sides
עפיפון
2 pairs of adjacent sides equal
מרובע כללי
4 sides, 4 vertices, sum of angles = 360°

טבלת השוואת תכונות

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

זכרו: הקוד הוא תרגום של הנוסחה, לא מקור ההבנה. מישהו היה צריך לדעת את נוסחת שרוך הנעל ואת כללי הסיווג כדי לכתוב אותו. הערך של הקוד: פירוק הנוסחה לשלבים ניתנים לעקיבה, אימות עם ערכים אמיתיים, ואיתור שגיאות.