Matematyka 3D

Graniastosłup trójkątny

Powierzchnia ma dwie równoboczne podstawy i trzy prostokątne ściany boczne. Przekroje równoległe do podstaw są takimi samymi trójkątami. Zmieniaj bok podstawy i wysokość, aby porównywać proporcje.

Pierwszy przykład

import ms3d

F = ms3d.graniastoslup_trojkatny()
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

Zmień bok z 5 na 3. Podstawy się zmniejszą, a wysokość pozostanie taka sama.

import ms3d

F = ms3d.graniastoslup_trojkatny(bok=3)
print(round(F(0, 0, 3), 6))
rysuj_3(F)

Wynik w konsoli:

0.0

Każdy przekrój równoległy do podstaw ma ten sam kształt i rozmiar. Środek ciężkości podstawy leży na osi Z. Jego odległość od górnego wierzchołka trójkąta jest większa niż od przeciwległego boku.

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

bok=5
Długość każdego boku równobocznej podstawy.
wysokosc=6
Pełna odległość między podstawami 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
max(-y-t3,3x+y-2t32,-3x+y-2t32,|z|-h2)=0

Wymagane są b = bok > 0 i h = wysokosc > 0; t = √3·b/2 to wysokość trójkąta podstawy. Oś graniastosłupa to Z, a podstawy leżą na Z = ±h/2. Nierówności tworzące maksimum opisują trzy boki i obie podstawy.

Bok i wysokość są dodatnie. Podstawy leżą na Z=±wysokosc/2. F jest określona w całej przestrzeni; poziom zero obejmuje także podstawy.

CDefinicja w Pythonie
import math

def F(x, y, z, bok=5, wysokosc=6):
    a, h = (bok, wysokosc)
    t = math.sqrt(3) * a / 2
    return max(-y - t / 3, (math.sqrt(3) * x + y - 2 * t / 3) / 2, (-math.sqrt(3) * x + y - 2 * t / 3) / 2, abs(z) - h / 2)

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

Spróbuj sam

Porównaj ten model z ostrosłupem. W którym z nich rozmiar poziomego przekroju zależy od wysokości?

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