Matematyka 3D
Walec eliptyczny
Podstawy tej powierzchni są elipsami, a niekoniecznie kołami. Poziome przekroje zachowują te same wymiary. Zmieniaj a i b, aby porównać przekrój okrągły z wydłużonym.
Pierwszy przykład
import ms3d
F = ms3d.walec_eliptyczny()
print(round(F(3, 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.
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 3 na 2 przy b=2. Eliptyczne podstawy staną się kołami.
import ms3d
F = ms3d.walec_eliptyczny(a=2)
print(round(F(3, 0, 0), 6))
rysuj_3(F)
Wynik w konsoli:
0.5
Wysokość nie wpływa na kształt podstaw. Każdy przekrój prostopadły do osi Z ma te same półosie. Jest to zmiana równania powierzchni, nie zniekształcenie obrazu przez kamerę.
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.walec_eliptyczny(a=3, b=2, wysokosc=6)
a=3- Półoś podstawy w kierunku X.
b=2- Półoś podstawy w kierunku Y.
wysokosc=6- Pełna wysokość między podstawami.
Parametry liczbowe muszą być skończonymi liczbami int lub float, bez wartości logicznych.
BRównanie, właściwości i dziedzina
Dodatnie a i b są półosiami podstaw, a h = wysokosc > 0. Oś to Z, a powierzchnia obejmuje obie podstawy. Dla a = b otrzymujemy walec kołowy.
Półosie i wysokość są dodatnie. F jest określona w całej przestrzeni. Rysowana jest powierzchnia boczna i obie eliptyczne podstawy.
CDefinicja w Pythonie
import math
def F(x, y, z, a=3, b=2, wysokosc=6):
return max(math.hypot(x / a, y / b) - 1, 2 * (abs(z) / wysokosc) - 1)
print(round(F(3, 0, 0), 6))
rysuj_3(F)
Spróbuj sam
Zwiększ tylko b dwa razy. Które punkty podstawy przesuną się, a które skrajne punkty na osi X pozostaną na miejscu?