Matematyka 3D

Elipsoida

Elipsoida jest powierzchnią o trzech osiach symetrii. Długości półosi a, b i c określają rozciągnięcie w przestrzeni. Gdy wszystkie trzy są równe, otrzymujemy sferę.

Pierwszy przykład

import ms3d

F = ms3d.elipsoida()
print(round(F(5, 0, 0), 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

Zmień a z 5 na 3. Dwie półosie będą równe, więc poziome przekroje staną się okręgami.

import ms3d

F = ms3d.elipsoida(a=3)
print(round(F(5, 0, 0), 6))
rysuj_3(F)

Wynik w konsoli:

0.666667

Środek pozostaje w początku układu. Skrajne punkty na osiach są oddalone od niego o a, b i c. Dopiero równość wszystkich trzech półosi daje sferę.

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.elipsoida(a=5, b=3, c=2)

a=5
Półoś wzdłuż X.
b=3
Półoś wzdłuż Y.
c=2
Półoś 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
(xa)2+(yb)2+(zc)2=1

Półosie są dodatnie i leżą wzdłuż X, Y oraz Z, a środek jest w początku układu. Równanie opisuje powierzchnię, bez wnętrza; pomocnicza F jest określona dla dowolnych współrzędnych.

Wszystkie półosie są dodatnie. Funkcja F przyjmuje dowolne trzy współrzędne; powierzchnia to jej poziom zero, a nie cała dziedzina.

CDefinicja w Pythonie
import math

def F(x, y, z, a=5, b=3, c=2):
    return math.hypot(x / a, y / b, z / c) - 1

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

Ten zapis dotyczy domyślnych parametrów.

import math

rysuj_3(lambda x, y, z: math.hypot(x / 5, y / 3, z / 2) - 1)

Spróbuj sam

Ustaw wszystkie półosie równe 3 i porównaj wynik z ms3d.sfera(r=3). Czy podobny obraz oznacza, że obie funkcje F zwracają wszędzie te same liczby?

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