
Απόδειξη:
Έστω \(\triangle ABC\) σταθερό τρίγωνο του προβολικού χώρου \(\mathbb{P}_{\mathbb{R}}^2\). Κάθε σημείο \(P\) όχι επί των πλευρών του \(ABC\) έχει ομογενείς βαρυκεντρικές συντεταγμένες \([x:y:z]\) με \(x+y+z\neq 0\) και \(xyz\neq 0\) αν \(P\) δεν ανήκει στις πλευρές. Τα \(A,B,C\) έχουν συντεταγμένες \([1:0:0],\, [0:1:0],\, [0:0:1]\) αντίστοιχα.
Ισογωνική συσχέτιση
Ορίζουμε τη ρητή απεικόνιση $$\tau: \mathbb{P}^2 \dashrightarrow \mathbb{P}^2$$ με τύπο:
$$\tau([x:y:z]) = [a^2yz : b^2zx : c^2xy]$$
όπου \(a=|BC|,\ b=|C A|,\ c=|AB|\). Η \(\tau\) λέγεται ισογωνική συσχέτιση ως προς το \(\triangle ABC\).
Περιγεγραμμένος κύκλος
Ο περιγεγραμμένος κύκλος του \(\triangle ABC\)είναι η κωνική τομή με εξίσωση:
$$\mathscr{O}:\ a^2yz + b^2zx + c^2xy = 0$$
Λήμμα 1
Η απεικόνιση \(\tau\) είναι involution, δηλαδή \(\tau^2 = id\) στο πεδίο ορισμού της. Επιπλέον, \(\tau(A)=BC,\ \tau(B)=C A,\ \tau(C)=AB\).
Απόδειξη. Για \([x:y:z]\) με \(xyz\neq 0\),
$$\begin{array}{lcl}
\tau(\tau([x:y:z])) &= &\tau([a^2yz : b^2zx : c^2xy]) = [a^2 \cdot b^2zx \cdot c^2xy : b^2 \cdot c^2xy \cdot a^2yz : c^2 \cdot a^2yz \cdot b^2zx]\\
&= & [a^2b^2c^2x^2yz : a^2b^2c^2y^2zx : a^2b^2c^2z^2xy] = [x:y:z].
\end{array}\quad \square$$
Λήμμα 2
Για κάθε σημείο \(P=[x:y:z]\) με \(xyz\neq 0\), ισχύει \(P\in\mathscr{O}\) αν και μόνο αν \(\tau(P)\) ανήκει στην ευθεία \(L_\infty: X+Y+Z=0\).
Απόδειξη. Έστω \(\tau(P)=[X:Y:Z]=[a^2yz:b^2zx:c^2xy]\). Τότε
$$X+Y+Z = a^2yz + b^2zx + c^2xy$$
Άρα $$X+Y+Z=0 \Leftrightarrow a^2yz + b^2zx + c^2xy=0 \Leftrightarrow P\in\mathscr{O}. \quad \square$$
Λήμμα 3
Αν η ευθεία \(L: ux+vy+wz=0\) δεν διέρχεται από καμία κορυφή του \(\triangle ABC\), τότε \(uvw\neq 0\).
Απόδειξη. Αν \(u=0\), τότε το \(A=[1:0:0]\) ικανοποιεί την \(L\). Όμοια για \(v,w. \quad \square\)
Θεώρημα
Έστω ευθεία \(L: ux+vy+wz=0\) στο επίπεδο του \(\triangle ABC\) που δεν διέρχεται από καμία κορυφή του. Το σύνολο \(\mathscr{L}={\tau(P) : P\in L,\ xyz\neq 0}\) είναι περιγεγραμμένη κωνική τομή του \(ABC\), η \(\tau\) είναι τετραγωνική απεικόνιση. Επιπλέον:
Αν η \(L\) τέμνει τον \(\mathscr{O}\) σε δύο διακεκριμένα σημεία, η \(\mathscr{L}\) είναι υπερβολή.
Αν η \(L\) εφάπτεται του \(\mathscr{O}\), η \(\mathscr{L}\) είναι παραβολή.
Αν η \(L\) δεν έχει κοινά πραγματικά σημεία με τον \(\mathscr{O}\), η \(\mathscr{L}\) είναι έλλειψη.
Απόδειξη.
Έστω \(P=[x:y:z]\in L\) με \(xyz\neq 0\). Τότε \(ux+vy+wz=0\).
Έστω \([X:Y:Z]=\tau(P)=[a^2yz:b^2zx:c^2xy]\). Επειδή \(xyz\neq 0\), έχουμε \(X,Y,Z\neq 0\), άρα:
$$x = \frac{b^2c^2YZ}{a^2b^2c^2xyz} \cdot a^2yz = \lambda a^2yz,\ \text{κ.ο.κ.}$$
Ακριβέστερα, από \(X=a^2yz,\ Y=b^2zx,\ Z=c^2xy\) παίρνουμε:
$$x = \frac{YZ}{b^2c^2x},\ \text{άρα}\ x^2 = \frac{Y Z}{b^2c^2} $$ %\Rightarrow x = \frac{k}{a^2}YZ$$
για κάποιο \(k\). Απαλείφοντας, καταλήγουμε στη σχέση:
$$\mathscr{L}:\ x : y : z = \frac{a^2}{X} : \frac{b^2}{Y} : \frac{c^2}{Z}$$
Αντικαθιστώντας στην \(ux+vy+wz=0\):
$$u\frac{a^2}{X} + v\frac{b^2}{Y} + w\frac{c^2}{Z} = 0 \ \Rightarrow\ ua^2YZ + vb^2ZX + wc^2XY = 0$$
Αυτή είναι ομογενής εξίσωση 2ου βαθμού. Άρα η \(\mathscr{L}\) είναι κωνική τομή. Για \(Y=Z=0\) η εξίσωση ικανοποιείται, άρα \(A=[1:0:0]\in\mathscr{L}\). Όμοια \(B,C\in\mathscr{L}\). Άρα η \(\mathscr{L}\) είναι περιγεγραμμένη.
Για το είδος της κωνικής, εξετάζουμε τα σημεία τομής της \(\mathscr{L}\) με την ευθεία στο άπειρο \(L_\infty: X+Y+Z=0\). Λόγω του Λήμματος 2, ένα σημείο \(\tau(P)\in\mathscr{L}\cap L_\infty\) αν και μόνο αν \(P\in L\cap\mathscr{O}\).
Συνεπώς το πλήθος των πραγματικών σημείων στο άπειρο της \(\mathscr{L} \) ισούται με \(|L\cap\mathscr{O}|\).
Το σύστημα \(ux+vy+wz=0,\ a^2yz+b^2zx+c^2xy=0\) έχει 0, 1 ή 2 πραγματικές λύσεις, ανάλογα αν η \(L\) δεν τέμνει, εφάπτεται ή τέμνει τον \(\mathscr{O}\). Αυτό καθορίζει αν η \(\mathscr{L}\) έχει \(0, 1\) ή \(2\) σημεία στο άπειρο, δηλαδή αν είναι έλλειψη, παραβολή ή υπερβολή αντίστοιχα. \(\blacksquare\)
Παρακάτω δίνουμε ένα κώδικα στη Python ο οποίος μπορεί να δεχθεί στην είσοδο παραμέτρους \(a,b,c,p,q\), οι οποίες αντιπροσωπεύουν τις κορυφές του τριγώνου \(A(0,0)\), \(B(a,0)\), \(C(b,c)\) και την ευθεία \(y=px+q\).
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.patches import Circleimport sympy as spdef isogonal_locus(a, b, c, d, e, save_name='locus_output.png'): """ A(0,0), B(a,0), C(b,c) Ευθεία: y = d*x + e """ if abs(c) < 1e-12: raise ValueError("Το C δεν μπορεί να είναι στην ευθεία AB, δηλαδή c≠0") # 1. Πλευρές στο τετράγωνο a2 = (a - b)**2 + c**2 # BC^2 b2 = b**2 + c**2 # CA^2 c2 = a**2 # AB^2 # 2. Ευθεία y = d*x + e σε βαρυκεντρικές lx + my + nz = 0 # x = a*Y + b*Z, y = c*Z, X+Y+Z=1 # d*(aY + bZ) + e = cZ => e*X + (d*a + e)*Y + (d*b - c + e)*Z = 0 l = e m = d*a + e n = d*b - c + e # 3. Κωνική σε βαρυκεντρικές: l*a2*Y*Z + m*b2*Z*X + n*c2*X*Y = 0 # Μετατροπή σε καρτεσιανές: X = 1-Y-Z, Y = (c*x - b*y)/(a*c), Z = y/c xs, ys = sp.symbols('x y') Zs = ys / c Ys = (c*xs - b*ys) / (a*c) Xs = 1 - Ys - Zs conic_eq = sp.expand(l*a2*Ys*Zs + m*b2*Zs*Xs + n*c2*Xs*Ys) conic_eq = sp.Eq(conic_eq, 0) # 4. Σχεδίαση def conic_xy(x, y): Z = y / c Y = (c*x - b*y) / (a*c) X = 1 - Y - Z return l*a2*Y*Z + m*b2*Z*X + n*c2*X*Y x_min = min(0, a, b) - 0.5*abs(a) x_max = max(0, a, b) + 0.5*abs(a) y_min = min(0, c) - 0.5*abs(c) y_max = max(0, c) + 0.5*abs(c) x_vals = np.linspace(x_min, x_max, 600) y_vals = np.linspace(y_min, y_max, 600) Xg, Yg = np.meshgrid(x_vals, y_vals) F = conic_xy(Xg, Yg) # Περιγεγραμμένος κύκλος D = 2 * (a*c) if abs(D) > 1e-10: ux = (a**2 * c) / D uy = (a * (b**2 + c**2 - a*b)) / D circ_center = (ux, uy) circ_R = np.hypot(ux, uy) else: circ_center, circ_R = (0, 0), 0 plt.figure(figsize=(8, 8)) plt.contour(Xg, Yg, F, levels=[0], colors='blue', linewidths=2, label='Ισογωνικός τόπος') plt.plot(x_vals, d*x_vals + e, 'r--', label=f'Ευθεία: y = {d}x + {e}') plt.plot([0, a, b, 0], [0, 0, c, 0], 'k-', lw=2, label='Τρίγωνο ABC') plt.scatter([0, a, b], [0, 0, c], c='k', zorder=5) for pt, name in [((0, 0), 'A'), ((a, 0), 'B'), ((b, c), 'C')]: plt.text(pt[0] + 0.1, pt[1] + 0.1, name, fontsize=12) if circ_R > 0: circ = Circle(circ_center, circ_R, fill=False, color='green', ls=':', lw=1.5, label='Περιγεγραμμένος κύκλος') plt.gca().add_patch(circ) plt.gca().set_aspect('equal') plt.grid(True, alpha=0.3) plt.legend() plt.title(f'A(0,0), B({a},0), C({b},{c}) | y={d}x+{e}') plt.tight_layout() plt.savefig(save_name, dpi=150) # Τοπικό path plt.show() return conic_eqif __name__ == "__main__": print("Δώσε τα a,b,c για A(0,0), B(a,0), C(b,c)") a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) print("Δώσε τα d,e για ευθεία y = dx + e") d = float(input("d = ")) e = float(input("e = ")) eq = isogonal_locus(a, b, c, d, e) print("\nΕξίσωση κωνικής:") sp.pprint(eq) print("\nΤο σχήμα αποθηκεύτηκε ως 'locus_output.png'")
Αν \(a=5,\ b=4,\ c=7,\ p=-1.5,\ q=-3\) τότε ο αλγόριθμος δίνει την εξίσωση της έλλειψης: $$16.0x^2 + 8.35714285714286xy – 80.0x + 3.92857142857143y^2 – 51.7857142857143y = 0$$
και το Σχήμα

Αν \(a=5,\ b=4,\ c=7,\ p=-0.5,\ q=3\) τότε ο αλγόριθμος δίνει την εξίσωση της έλλειψης: $$6.0x^2 + 0.785714285714285xy – 30.0x – 3.07142857142857y^2 + 21.7857142857143y = 0$$

Αν \(a=10,\ b=1,\ c=6,\ p=2.2222,\ q=4.5\), ( η ευθεία εφάπτεται του περιγεγραμμένου κύκλου στο \(\triangle ABC\) ) τότε ο αλγόριθμος δίνει την εξίσωση της παραβολής: $$-0.7222x^2 – 8.6665xy + 7.222x – 25.9998y^2 + 163.582y = 0$$

