# steunpuntsreacties.py - een balk op twee steunpunten: A bij x = 0, B bij x = L
L = 2.40                                    # overspanning van de vloerbalk (m)


def reacties(puntlasten, verdeeld):
    """puntlasten: lijst van (F in N, x in m); verdeeld: lijst van (q in N/m, x1, x2)."""
    krachten = list(puntlasten)
    for q, x1, x2 in verdeeld:              # verdeelde last: resultante in het midden
        krachten.append((q * (x2 - x1), (x1 + x2) / 2))
    som_F = sum(F for F, x in krachten)
    som_M_A = sum(F * x for F, x in krachten)   # moment van elke last om A
    R_B = som_M_A / L                       # som van de momenten om A is nul
    R_A = som_F - R_B                       # som van de verticale krachten is nul
    return R_A, R_B


eigengewicht = [(75.0, 0.0, L)]             # balk en vloerstrook: 75 N/m
print(" x reservoir (m)   R_A (N)   R_B (N)")
for i in range(5):
    x = 0.40 + 0.40 * i                     # midden van het reservoir
    reservoir = [(996.3, x - 0.32, x + 0.32)]   # 65 kg op 0,64 m balk
    R_A, R_B = reacties([], eigengewicht + reservoir)
    print(f"{x:10.2f}      {R_A:8.1f}  {R_B:8.1f}")
