Dodano też sprawdzanie, czy wyznacznik nie jest mniejszy niż zero, co oznaczałoby, że czworościan o podanych krawędziach nie istnieje.import numpy as np
def tetrahedron_volume(a, b, c, x, y, z): M = np.array([ [ 0, a**2, b**2, c**2, 1], [a**2, 0, x**2, y**2, 1], [b**2, x**2, 0, z**2, 1], [c**2, y**2, z**2, 0, 1], [ 1, 1, 1, 1, 0] ], dtype=float)
delta = np.linalg.det(M) # obliczanie wyznacznika
# Korekta drobnych błędów numerycznych if delta < 0 and abs(delta) < 1e-10: delta = 0
if delta < 0: raise ValueError("Podane długości nie tworzą czworościanu.")
return np.sqrt(delta / 288.0)
# Przykład: czworościan foremny o krawędzi 1 # tetrahedron_volume(a, b, c, x, y, z) V = tetrahedron_volume(1, 1, 1, 1, 1, 1) print(1/V) Promień sfery opisanej, gdy dane są długości krawędzi
Dla każdego czworościanu istnieje sfera opisana, tj. sfera do której należą wierzchołki czworościanu. Promień tej sfery dany jest wzorem
gdzie: – zmienna pomocnicza podana wyżej,
– długość krawędzi łączącej wierzchołek z wierzchołkiem
Promień sfery wpisanej, gdy dane są długości krawędzi Promień sfery wpisanej w czworościan dany jest wzorem
gdzie to pole ściany niezawierającej wierzchołka