{}
Visualize
main.py
import numpy as np def coeffs_and_params(a,b,c,p,q): qp = q / c pp = (p*c - b*q) / (a*c) A = qp**2 / a**2 B = -2*qp/(a*c)*(qp*b/a + pp) C = (qp*b/a + pp)**2 / c**2 D = -qp**2 / a E = (qp**2*b/a - pp**2) / c return A,B,C,D,E, pp, qp def map_uv(a,b,c, uv): u,v = uv return np.array([a*u + b*v, c*v]) def triangle_area(P1, P2, P3): # Εμβαδόν τριγώνου από συντεταγμένες με τύπο ορίζουσας x1, y1 = P1 x2, y2 = P2 x3, y3 = P3 return 0.5 * abs(x1*(y2 - y3) + x2*(y3 - y1) + x3*(y1 - y2)) def main(): print("Παραβολή από A(0,0), B(a,0), C(b,c) με άξονα (p,q)") a = float(input("a για B(a,0): ")) b = float(input("b για C(b,c): ")) c = float(input("c για C(b,c): ")) p = float(input("p : ")) q = float(input("q : ")) A,B,C,D,E, pp, qp = coeffs_and_params(a,b,c,p,q) print("\nΕξίσωση παραβολής:") eq = f"{A:.6g}x² {'+' if B>=0 else '-'} {abs(B):.6g}xy {'+' if C>=0 else '-'} {abs(C):.6g}y² {'+' if D>=0 else '-'} {abs(D):.6g}x {'+' if E>=0 else '-'} {abs(E):.6g}y = 0" print(eq) # σημεία στο (u,v) Kp, Lp, Mp = (0.5,0.5), (0.0,0.5), (0.5,0.0) u = - qp / (4*pp*(pp+qp)) Rp = (0.5 + u*pp, u*qp) s = -1/(4*pp) Pp = (Kp[0] + s*pp, Kp[1] + s*qp) t = 1/(4*(pp+qp)) Qp = (Lp[0] + t*pp, Lp[1] + t*qp) pts = {} for name,uv in {"K":Kp,"L":Lp,"M":Mp,"R":Rp,"P":Pp,"Q":Qp}.items(): pts[name] = map_uv(a,b,c, uv) pts["A"] = np.array([0,0]) pts["B"] = np.array([a,0]) pts["C"] = np.array([b,c]) # Υπολογισμός εμβαδών area_RPK = triangle_area(pts["R"], pts["P"], pts["K"]) area_RQL = triangle_area(pts["R"], pts["Q"], pts["L"]) print(f"\nΕμβαδό τριγώνου RPK: {area_RPK:.6g}") print(f"Εμβαδό τριγώνου RQL: {area_RQL:.6g}") print(f"Διαφορά εμβαδών: {abs(area_RPK - area_RQL):.6g}") if __name__ == "__main__": main()
Output