Laboratoria / Eksperyment 02

Co łączy okrąg ze sferą?

Obejrzyj sferę o promieniu 5. Oblicz i porównaj jej przekroje na trzech wysokościach.

Autor materiału i koncepcji: Mariusz Smółka. Wszystkie laboratoria.

1. Pytanie badawcze

Jak powstaje sfera i dlaczego jej przekroje mogą mieć różne promienie?

Okrąg to zbiór punktów płaszczyzny oddalonych jednakowo od środka. Koło zawiera również punkty wewnątrz okręgu. Sfera jest powierzchnią w przestrzeni: wszystkie jej punkty mają tę samą odległość od środka. Kula zawiera sferę i jej wnętrze.

Obracajmy okrąg wokół prostej zawierającej jego średnicę. Zbiór wszystkich punktów, przez które przechodzi obracany okrąg, tworzy sferę. To operacja geometryczna. Obracanie kamery w IDE zmienia tylko kierunek patrzenia na gotową powierzchnię.

Przecinamy sferę płaszczyzną z = h. Gdy płaszczyzna przechodzi przez wnętrze kuli, jej część wspólna ze sferą jest okręgiem. Część wspólna tej samej płaszczyzny z kulą jest kołem. W tym eksperymencie badamy okręgi, nie koła.

Przyjmujemy R = 5 oraz h = 0, 3 i 4. R oznacza promień sfery, h wysokość płaszczyzny względem środka, a r promień otrzymanego okręgu. Odległość płaszczyzny od środka wynosi |h|. L oznacza długość okręgu, a π stałą matematyczną pi.

Przed uruchomieniem programu przewidź, na której wysokości przekrój będzie największy. Wzory i odpowiadające im ilustracje znajdziesz w części 3.

2. Program Python

Skopiuj cały program do Python IDE Extended i wybierz Uruchom. Najpierw pojawi się sfera. Trzy kolejne naciśnięcia Enter w polu odpowiedzi pokażą przekroje dla h = 0, 3 i 4. Czwarte naciśnięcie Enter wyświetli ich wspólne porównanie i program zakończy się naturalnie.

import math
import ms2d
import ms3d

R = 5
wysokosci = [0, 3, 4]

# Najpierw oglądamy sferę.
rysuj_3(ms3d.sfera(r=R))

okregi = []

for h in wysokosci:
    input(f"Enter - pokaż przekrój dla h = {h}")

    # Obliczamy promień przekroju.
    r = math.sqrt(R**2 - h**2)

    # Obliczamy długość okręgu.
    L = 2 * math.pi * r

    print(f"h = {h}, r = {r:g}, L = {L:.2f}")

    okrag = ms2d.okrag(r=r)
    okregi.append(okrag)

    # Wyświetlamy pojedynczy przekrój.
    rysuj_2(okrag)

input("Enter - porównaj wszystkie przekroje")

# Trzy okręgi na wspólnych osiach.
rysuj_2(*okregi)

Pobierz kompletny program .py. Jak uruchomić program w IDE?

import math udostępnia moduł matematyczny. math.pi reprezentuje liczbę pi, a math.sqrt() oblicza pierwiastek kwadratowy. Zapis :.2f wyświetla wynik z dwoma miejscami po przecinku. Standardowy wynik Pythona używa kropki dziesiętnej.

Skąd wziąć pi i jak użyć jej w obliczeniu?
import math

print(math.pi)
import math

r = 4

# Obliczamy długość okręgu.
L = 2 * math.pi * r

print(f"Długość okręgu: {L:.2f}")

Nie zastępuj math.pi ręcznie wpisanym przybliżeniem. Formatowanie zmienia sposób wyświetlenia wyniku, a nie wartość używaną w obliczeniach.

ms3d.sfera(r=R) opisuje powierzchnię sfery. ms2d.okrag(r=r) opisuje okrąg przekroju, a lista okregi gromadzi trzy takie funkcje. Gwiazdka w rysuj_2(*okregi) przekazuje je jako osobne argumenty.

Program tworzy pięć oddzielnych wizualizacji, mieszcząc się w limicie ośmiu. Każde wywołanie rysujące dodaje nowy wynik. Nie przesuwa płaszczyzny na istniejącej scenie 3D i nie wykonuje interaktywnego cięcia sfery.

Dla wybranych wysokości zachodzi |h| < R, więc promień przekroju jest dodatni. Przy |h| = R przekrój jest punktem; ms2d.okrag() wymaga dodatniego promienia. Przy |h| > R nie ma przekroju, a pierwiastek z ujemnej liczby nie jest liczbą rzeczywistą.

3. Wizualizacje

Wykresy 2D pokazują przekroje oglądane prostopadle do ich płaszczyzn. Współrzędne X i Y pozostają te same; wysokość z = h podaje podpis. Zachowano jednakową skalę jednostek X i Y oraz wspólny kadr dla wszystkich okręgów.

Okrąg o promieniu R = 5

x2+y2=R2

Wszystkie punkty tego okręgu leżą na płaszczyźnie i są oddalone od środka o 5 jednostek. W równaniu prawa strona wynosi 25.

Okrąg o promieniu 5, środek w początku układu.
Okrąg R = 5. Ten sam kontur pojawi się w przekroju środkowym sfery.

Sfera o promieniu R = 5

x2+y2+z2=R2

Teraz punkty leżą w przestrzeni trójwymiarowej. Ich odległość od środka nadal wynosi 5. Zrzut pokazuje rzeczywisty wynik rysuj_3(ms3d.sfera(r=5)), z osiami X, Y i Z.

Sfera o promieniu 5, rzeczywisty widok 3D z IDE.
Sfera jest powierzchnią, nie wypełnioną bryłą. Widoczne drobne nierówności wynikają z numerycznej wizualizacji.

Jak wyznaczamy promień przekroju?

z=hx2+y2=R2−h2r=R2−h2L=2πr

Po podstawieniu z = h pozostaje równanie okręgu. Jego promień wynosi r = √(R² − h²), a długość L = 2πr. Wzór na r stosujemy dla |h| ≤ R; tylko przy |h| < R otrzymujemy okrąg o dodatnim promieniu.

Przy |h| = R płaszczyzna jest styczna do sfery i ma z nią wspólny jeden punkt. Przy |h| > R nie ma punktów wspólnych.

Przekrój na wysokości h = 0

x2+y2=25

r = √(25 − 0) = 5. Długość okręgu wynosi L = 10π ≈ 31,42. Python oblicza te wartości ze wzorów.

Przekrój sfery dla h = 0: okrąg o promieniu 5.
Płaszczyzna z = 0; promień okręgu r = 5.

Przekrój na wysokości h = 3

x2+y2=16

r = √(25 − 9) = 4. Długość okręgu wynosi L = 8π ≈ 25,13. Python oblicza te wartości ze wzorów.

Przekrój sfery dla h = 3: okrąg o promieniu 4.
Płaszczyzna z = 3; promień okręgu r = 4.

Przekrój na wysokości h = 4

x2+y2=9

r = √(25 − 16) = 3. Długość okręgu wynosi L = 6π ≈ 18,85. Python oblicza te wartości ze wzorów.

Przekrój sfery dla h = 4: okrąg o promieniu 3.
Płaszczyzna z = 4; promień okręgu r = 3.

Trzy przekroje na wspólnych osiach

Rysunki z różnych wysokości nakładamy na jeden układ X/Y, aby porównać ich promienie. Nie oznacza to, że wszystkie trzy okręgi leżą na tej samej wysokości w przestrzeni.

Trzy współśrodkowe okręgi o promieniach 5, 4 i 3.
Końcowy wynik rysuj_2(*okregi). Kolory odpowiadają kolejności wysokości w programie.
  1. 1.h = 0, r = 5
  2. 2.h = 3, r = 4
  3. 3.h = 4, r = 3

Ilustracje są statyczne i pochodzą z istniejących mechanizmów IDE. Zmiany parametrów sprawdzaj w aplikacji. Więcej o ograniczeniach wizualizacji.

4. Obserwacje i wnioski

Im dalej płaszczyzna leży od środka sfery, tym mniejszy promień okręgu przekroju. W równaniu rośnie h², więc maleje R² − h². Największy okrąg otrzymujemy dla h = 0.

Wyniki obliczeń dla R = 5
hrDługość L
0510π ≈ 31,42
348π ≈ 25,13
436π ≈ 18,85

Wyświetlone długości są zaokrąglone do dwóch miejsc po przecinku. Gdy promień maleje, długość okręgu maleje w tej samej proporcji. Dla przeciwnych wysokości h i −h promienie przekrojów są takie same, ponieważ we wzorze występuje h².

5. Dalsze doświadczenia

Dobieraj wysokości tak, aby |h| < R. Dla pełnego widoku sfery w standardowym obszarze IDE wybierz dodatni promień mniejszy niż 6. Zachowaj trzy wysokości, aby program nadal tworzył pięć wizualizacji.

W Bazie wiedzy znajdziesz artykuły Okrąg i Sfera. Opisują one parametry funkcji użytych w programie.

Wynik eksperymentu w PDF

Po wykonaniu eksperymentu możesz zachować kod programu i otrzymane wizualizacje w pliku PDF. Poniżej znajduje się przykładowy dokument wygenerowany bezpośrednio w Python IDE Extended.

Pobierz przykładowy wynik eksperymentu (PDF)

Eksport zawiera kod i pięć wizualizacji. Obecna funkcja Drukuj / PDF nie dołącza treści konsoli.