Matematyka 3D

Ostrosłup czworokątny

Powierzchnia ostrosłupa ma kwadratową podstawę i cztery trójkątne ściany boczne. Wierzchołek leży nad środkiem podstawy. Zmieniaj bok podstawy i wysokość, aby porównać nachylenie ścian.

Pierwszy przykład

import ms3d

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

Zmniejsz wysokość z 6 do 3, nie zmieniając boku podstawy. Ściany boczne staną się mniej strome.

import ms3d

F = ms3d.ostroslup(wysokosc=3)
print(round(F(0, 0, 3), 6))
rysuj_3(F)

Wynik w konsoli:

1.5

Podstawa leży poniżej początku układu, a wierzchołek nad nim. Poziome przekroje są kwadratami o boku malejącym liniowo z wysokością. Na Z=0 bok jest równy połowie boku podstawy.

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.ostroslup(bok=6, wysokosc=6)

bok=6
Bok kwadratowej podstawy.
wysokosc=6
Pełna wysokość od podstawy do wierzchołka.

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

BRównanie, właściwości i dziedzina
u=b2(12-zh)max(|x|-u,|y|-u,|z|-h2)=0

Jest to ostrosłup prawidłowy czworokątny; b = bok > 0 i h = wysokosc > 0. Podstawa leży na Z = -h/2, a wierzchołek na Z = h/2. Wielkość u oznacza połowę boku poziomego przekroju.

Bok i wysokość są dodatnie. F jest określona w całej przestrzeni. Rysowana jest zamknięta powierzchnia, łącznie z podstawą.

CDefinicja w Pythonie

def F(x, y, z, bok=6, wysokosc=6):
    a, h = (bok, wysokosc)
    polowa = a / 2 * (0.5 - z / h)
    return max(abs(x) - polowa, abs(y) - polowa, abs(z) - h / 2)

print(round(F(0, 0, 3), 6))
rysuj_3(F)

Spróbuj sam

Oblicz bok przekroju na Z=0 dla bok=6. Czy zmieni się on po zmianie samej wysokości?

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