Matematyka 3D

Hiperboloida dwupowłokowa

Powierzchnia składa się z dwóch rozdzielonych części po przeciwnych stronach środka. Między nimi pozostaje przerwa. Zmieniaj c, aby porównać odległość między najbliższymi punktami obu części.

Pierwszy przykład

import ms3d

F = ms3d.hiperboloida_dwupowlokowa()
print(round(F(0, 0, 2), 6))
rysuj_3(F)

Wynik w konsoli:

0.0

Wartość F w podanym punkcie nie jest wysokością powierzchni. Narysowane są punkty F=0, bez wypełniania wnętrza bryły. Matematyczna powierzchnia i obszar podglądu to różne rzeczy.

Obracaj myszą lub strzałkami. Kółko przybliża, Home przywraca widok.

Podgląd przedstawia pierwszy program. Zmianę kodu wykonaj w edytorze. Obrót, przesuwanie i przybliżanie nie obliczają nowych wartości funkcji.

Eksperymentuj

Zwiększ c z 2 do 3. Odległość między najbliższymi punktami obu powłok zwiększy się z 4 do 6.

import ms3d

F = ms3d.hiperboloida_dwupowlokowa(c=3)
print(round(F(0, 0, 2), 6))
rysuj_3(F)

Wynik w konsoli:

-0.555556

Wierzchołki powłok to (0,0,c) i (0,0,-c). W przekroju Z=0 nie ma punktów powierzchni. Jest to różnica matematyczna, a nie efekt ukrywania tylnej części modelu.

Odkrywaj w swoim tempie

AParametry i wartości domyślne

Pierwszy program wywołuje funkcję bez ustawień, czyli korzysta z wszystkich wartości domyślnych podanych poniżej.

ms3d.hiperboloida_dwupowlokowa(a=2, b=2, c=2)

a=2
Skala rozwarcia w kierunku X.
b=2
Skala rozwarcia w kierunku Y.
c=2
Odległość najbliższego punktu każdej powłoki od środka wzdłuż Z.

Parametry liczbowe muszą być skończonymi liczbami int lub float, bez wartości logicznych.

BRównanie, właściwości i dziedzina
(zc)2-(xa)2-(yb)2=1

Parametry a, b, c są dodatnie, a powłoki istnieją tylko dla |Z| ≥ c. Ich wierzchołki to (0, 0, c) i (0, 0, -c), więc dzieli je odległość 2c. Parametry a i b wpływają na rozwarcie.

Wszystkie parametry są dodatnie. F jest określona w całej przestrzeni, ale na samej powierzchni musi zachodzić |Z|≥c. Między powłokami pozostaje przerwa.

CDefinicja w Pythonie

def F(x, y, z, a=2, b=2, c=2):
    return (z / c) ** 2 - (x / a) ** 2 - (y / b) ** 2 - 1

print(round(F(0, 0, 2), 6))
rysuj_3(F)
DKrótki zapis lambda

Ten zapis dotyczy domyślnych parametrów.

rysuj_3(lambda x, y, z: (z / 2) ** 2 - (x / 2) ** 2 - (y / 2) ** 2 - 1)

Spróbuj sam

Zmieniaj samo a przy stałym c. Czy odległość między wierzchołkami powłok też się zmienia?

Dokładność, obszar obliczeń i ograniczenia środowiska