Matematyka 3D

Stożek ścięty

Powierzchnia ma dwie kołowe podstawy i bok łączący ich brzegi. Promień zmienia się równomiernie pomiędzy podstawami. Gdy oba promienie są równe, otrzymujemy walec.

Pierwszy przykład

import ms3d

F = ms3d.stozek_sciety()
print(round(F(3, 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ń r_gora z 1.5 na 3. Ponieważ r_dol=3, otrzymasz powierzchnię walca.

import ms3d

F = ms3d.stozek_sciety(r_gora=3)
print(round(F(3, 0, -3), 6))
rysuj_3(F)

Wynik w konsoli:

0.0

Promień przekroju zmienia się równomiernie od dolnej do górnej podstawy. W połowie wysokości jest średnią obu promieni. Sama nazwa nie oznacza, że mniejsza podstawa zawsze musi leżeć u góry.

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.stozek_sciety(r_dol=3, r_gora=1.5, wysokosc=6)

r_dol=3
Promień dolnej podstawy.
r_gora=1.5
Promień górnej podstawy.
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
max(x2+y2-(rd+(rg-rd)(12+zh)),|z|-h2)=0

Dodatnie r_dol i r_gora oznaczono jako r z indeksami d i g, a wysokość jako h > 0. Podstawy leżą na Z = ±h/2. Większy promień może należeć do dowolnej z podstaw.

Oba promienie i wysokość są dodatnie. Dowolna z podstaw może mieć większy promień. F jest określona w całej przestrzeni, a powierzchnia obejmuje obie podstawy.

CDefinicja w Pythonie
import math

def F(x, y, z, r_dol=3, r_gora=1.5, wysokosc=6):
    a, b, h = (r_dol, r_gora, wysokosc)
    return max(math.hypot(x, y) - (a + (b - a) * (0.5 + z / h)), abs(z) - h / 2)

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

Spróbuj sam

Zamień promienie miejscami. Czy wynik jest odbiciem poprzedniej powierzchni względem płaszczyzny Z=0?

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