import numpy as np

A = np.array([0.0, 0.0])
B = np.array([4.0, 0.0])
C = np.array([2.0, 3.0])
P = 100.0  # kN, C'de dusey asagi yuk

# Reaksiyonlar (moment dengesi, A etrafinda)
R_By = P * 2 / 4
R_Ay = P - R_By

def unit_vector(p_from, p_to):
    v = p_to - p_from
    return v / np.linalg.norm(v)

# C dugumu dengesi: F_AC*uCA + F_BC*uCB + (0,-P) = 0
uCA = unit_vector(C, A)
uCB = unit_vector(C, B)
A_mat = np.column_stack([uCA, uCB])
b_vec = np.array([0, P])
F_AC, F_BC = np.linalg.solve(A_mat, b_vec)

# A dugumu dengesi (F_AB icin)
uAC = unit_vector(A, C)
uAB = unit_vector(A, B)
F_AB = -(F_AC * uAC[0]) / uAB[0]

print(f"RAy = {R_Ay} kN, RBy = {R_By} kN")
print(f"F_AC = {F_AC:.2f} kN, F_BC = {F_BC:.2f} kN (negatif=basinc)")
print(f"F_AB = {F_AB:.2f} kN (pozitif=cekme)")

# BAGIMSIZ DOGRULAMA: B dugumu dengesi (bu denklem cozumde KULLANILMADI)
uBC = unit_vector(B, C)
uBA = unit_vector(B, A)
checkX = F_BC*uBC[0] + F_AB*uBA[0]
checkY = F_BC*uBC[1] + F_AB*uBA[1] + R_By
print(f"B dugumu kontrolu: Fx={checkX:.6f}, Fy={checkY:.6f} (ikisi de 0 olmali)")
