Matematyka 3D

Sfera

Sfera to powierzchnia, której każdy punkt jest tak samo odległy od środka. Wyobraź sobie samą skórkę idealnie okrągłej piłki.

Kula zawiera również wnętrze. Tutaj oglądasz samą powierzchnię.

Najpierw zobacz

Ten program rysuje sferę o promieniu 3, ze środkiem w początku układu współrzędnych.

import ms3d

rysuj_3(ms3d.sfera(r=3))

Skopiuj kod i otwórz edytor Python IDE Extended. Zamień 3 na 2, a potem na 4. Co się zmieni?

Kod możesz skopiować i wkleić do edytora Python IDE Extended.

Obróć model myszą lub strzałkami. Kółko przybliża, a Home przywraca widok.

Ten podgląd pokazuje sferę o promieniu r=3. Zmiany kodu sprawdzaj w edytorze. Kolor zmienia się wraz z wysokością punktu na osi Z.

Ładowanie modelu…

Jak dokładny jest ten obraz?

Odkrywaj w swoim tempie

Nie trzeba otwierać wszystkiego naraz. Wybierz pytanie, które Cię zaciekawiło.

APoznaj parametry

Parametr pozwala przekazać funkcji wybraną wartość. Tutaj r oznacza promień: odległość od środka do dowolnego punktu sfery.

Jeśli nie podasz r, funkcja użyje wartości 5. To wartość domyślna. Wywołanie ms3d.sfera() daje więc taki sam promień jak ms3d.sfera(r=5).

Promień musi być liczbą większą od zera. Nieskończoność nie jest dozwolona.

r>0

W pierwszym przykładzie wybraliśmy promień r=3.

BOdkryj wzór matematyczny

Środek tej sfery leży w punkcie o współrzędnych zero, zero, zero. Jej punkty spełniają równanie:

x2+y2+z2=r2

Funkcja ms3d.sfera() opisuje sferę za pomocą jej środka i promienia.

Każdy punkt sfery znajduje się w tej samej odległości od środka. Ta odległość jest równa promieniowi.

F(x,y,z)=x2+y2+z2−r

Na powierzchni odległość wynosi dokładnie r, więc:

F(x,y,z)=0

Sprawdź w myślach punkt (3, 0, 0) dla promienia 3. A punkt (0, 0, 0)?

CPoznaj dziedzinę

Dziedzina mówi, jakie wartości możesz podać funkcji. Dla ustalonego dodatniego promienia funkcja F(x, y, z) przyjmuje dowolną trójkę liczb rzeczywistych:

DF=R3

Dziedzina funkcji nie jest tym samym co powierzchnia. Do sfery należą tylko punkty, w których F ma wartość zero.

Dziedzina nie jest też obszarem podglądu. Program oblicza wartości funkcji tylko w wybranych punktach. Leżą one w sześcianie:

[−6,6]3

Większa sfera może wyjść poza ten obszar. Matematycznie nadal istnieje, lecz obraz może pokazać tylko jej fragment. Więcej w rozdziale o ograniczeniach 3D.

DZobacz definicję w Pythonie

Odległość punktu od początku układu oblicza math.hypot(x, y, z). Po odjęciu promienia otrzymujemy funkcję, której zera wyznaczają sferę:

import math

def F(x, y, z):
    return math.hypot(x, y, z) - 3

rysuj_3(F)

math.hypot oblicza odległość punktu od początku układu. Funkcja rysuj_3 szuka powierzchni, na której wynik F wynosi zero.

EZapis lambda

Krótki wzór można zapisać bez nadawania funkcji osobnej nazwy:

import math

rysuj_3(lambda x, y, z: math.hypot(x, y, z) - 3)

To ten sam wzór co w poprzednim programie. lambda pomaga przy krótkich doświadczeniach. Gdy obliczenie ma kilka kroków albo chcesz je opisać komentarzami, zwykłe def będzie czytelniejsze.

FSpróbuj samodzielnie
  1. Narysuj kolejno sfery o promieniach 1, 2 i 4. Przed uruchomieniem przewidź zmianę obrazu.
  2. Sprawdź punkt (0, 3, 0) w swojej funkcji. Jaką wartość otrzymasz?
  3. Zastąp odległość równaniem z kwadratami. Czy rozpoznajesz tę samą powierzchnię?
def F(x, y, z):
    return x*x + y*y + z*z - 9

rysuj_3(F)

Obie funkcje mają wartość zero w tych samych punktach. Dla promienia 3 punkty te tworzą sferę.

Program tworzy obraz z wybranych punktów. Dlatego obrazy uzyskane z tych dwóch zapisów mogą się nieznacznie różnić. Dlaczego tak się dzieje?

Spróbuj też promienia zero. Najpierw przewidź, czy funkcja przyjmie tę wartość. Potem sprawdź komunikat w konsoli, czyli miejscu na wyniki programu.