חפיפה ודמיון משולשים

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

חפיפת SSS — שלושה ייצוגים של אותו רעיון

ויזואלי — "אני רואה את זה"
a=5 b=6 c=7 a'=5 b'=6 c'=7 ABC ≅ A'B'C' A B C A' B' C'
נוסחה — "אני מבין את היחס"
SSS Congruence
a₁ = a₂ , b₁ = b₂ , c₁ = c₂
Similarity (scale factor)
k = a₁/a₂ = b₁/b₂ = c₁/c₂
Area ratio
A₁/A₂ = k²
קוד מפורק — "אני עוקב אחרי השלבים"
# Step 1: sort sides of each triangle
s1 = sorted([a1, b1, c1])
s2 = sorted([a2, b2, c2])

# Step 2: compare each pair
match = all(
  abs(s1[i] - s2[i]) < 0.01
  for i in range(3)
)
סדרו, השוו, הסיקו
בשפה פשוטה (ללא קוד)
1. סדרו את צלעות כל משולש מהקטנה לגדולה: [5, 6, 7]
2. השוו כל זוג: 5=5, 6=6, 7=7
3. כל הזוגות שווים? כן — חופפים!

שימו לב: הצבעים עקביים — צלעות משולש 1 בטורקיז/תכלת/כחול, צלעות משולש 2 בכתום/ענבר/ורוד. סימני ההתאמה בירוק מחברים את הציור, הנוסחה והקוד.

מיפוי בין ייצוגים

כל שורה היא אותו דבר בשלוש צורות שונות:

Math Python Code Visual (SVG) Color
a₁ t1['sides']['a'] Triangle 1 — side BC teal
b₁ t1['sides']['b'] Triangle 1 — side AC cyan
c₁ t1['sides']['c'] Triangle 1 — side AB blue
a₂ t2['sides']['a'] Triangle 2 — side B'C' orange
b₂ t2['sides']['b'] Triangle 2 — side A'C' amber
c₂ t2['sides']['c'] Triangle 2 — side A'B' rose
k scale_factor Ratio badge / overlay label violet
≅ / ∼ congruent / similar Tick marks on matched elements emerald

מחשבון אינטראקטיבי

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

משולש 1 (ABC)
משולש 2 (A'B'C')
ויזואלי — שני המשולשים
בדיקה שלב אחרי שלב

קריטריונים לחפיפה

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

SSS צלע-צלע-צלע

אם שלוש הצלעות של משולש אחד שוות לשלוש הצלעות של השני — הם חופפים.

sorted(sides1) == sorted(sides2)
SAS צלע-זווית-צלע

שתי צלעות והזווית שביניהן שוות — חופפים.

sides_match and included_angle_match
ASA זווית-צלע-זווית

שתי זוויות והצלע שביניהן שוות — חופפים.

angles_match and included_side_match
AAS זווית-זווית-צלע

שתי זוויות וצלע שלא ביניהן שוות — חופפים. (נובע מ-ASA כי הזווית השלישית נקבעת.)

# If 2 angles match => 3rd is fixed two_angles_match and any_side_match

קריטריונים לדמיון

דמיון = אותה צורה, גודל שונה. יחס דמיון k קובע את הקנה מידה.

AA זווית-זווית

אם שתי זוויות שוות, השלישית בהכרח שווה (סכום = 180°). המשולשים דומים.

sorted(angles1) == sorted(angles2)
SAS~ צלע-זווית-צלע (יחסי)
k

שתי צלעות ביחס שווה והזווית שביניהן שווה — המשולשים דומים.

a1/a2 == b1/b2 and angle == angle
SSS~ צלע-צלע-צלע (יחסי)
k k

כל שלוש הצלעות באותו יחס k — דומים.

a1/a2 == b1/b2 == c1/c2 == k

תכונות יחס הדמיון k

יחס צלעות
k
new_side = side * k
יחס היקפים
k
new_perim = perim * k
יחס שטחים
new_area = area * k**2

קוד Python מלא

הקוד המלא נמצא בקובץ congruence_similarity_calculator.py — כולל SSS/SAS/ASA, בדיקת דמיון, חישוב יחס שטחים, ותפריט אינטראקטיבי.

class CongruenceSimilarityCalculator:

    def check_sss(self, t1, t2, tolerance=0.01):
        """SSS: all three sides equal."""
        s1 = sorted([t1['sides']['a'], t1['sides']['b'], t1['sides']['c']])
        s2 = sorted([t2['sides']['a'], t2['sides']['b'], t2['sides']['c']])

        match = all(abs(s1[i] - s2[i]) < tolerance for i in range(3))
        return {'congruent': match, 'sides_1': s1, 'sides_2': s2}

    def check_similarity(self, t1, t2, tolerance=0.01):
        """AA/SSS-ratio check, returns scale factor k."""
        s1 = sorted([t1['sides']['a'], ...])
        s2 = sorted([t2['sides']['a'], ...])

        ratios = [s1[i] / s2[i] for i in range(3)]
        similar = all(abs(ratios[i] - ratios[0]) < tolerance ...)

        k = ratios[0]                  # scale factor
        area_ratio = k ** 2            # area ratio = k squared
        return {'similar': similar, 'scale_factor': k, 'area_ratio': area_ratio}

# Run: python congruence_similarity_calculator.py

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