Matematyka 2D

Superelipsa

Krzywa może przypominać elipsę, romb albo zaokrąglony prostokąt. O kształcie decyduje wykładnik n, a nie tylko rozmiary. Porównaj n równe 1, 2 i 4.

Pierwszy przykład

import ms2d

F = ms2d.superelipsa()
print(round(F(4, 0), 6))
rysuj_2(F)

Wynik w konsoli:

0.0

Wartość F w podanym punkcie jest liczbą pomocniczą, a nie współrzędną Y. Do krzywej należą punkty z wynikiem zero. Dziedzina F obejmuje więcej punktów niż sama krzywa.

Podgląd przedstawia pierwszy program. Zmianę kodu wykonaj w edytorze. Przesuwanie i przybliżanie nie obliczają nowych wartości funkcji.

Eksperymentuj

Porównaj domyślne n=3 z n=1. Potem sprawdź n=2 i n=4, nie zmieniając półosi.

import ms2d

F = ms2d.superelipsa(n=1)
print(round(F(4, 0), 6))
rysuj_2(F)

Wynik w konsoli:

0.0

Dla n=1 powstaje romb, dla n=2 elipsa, a większe n zaokrąglają obrys podobny do prostokąta. Skrajne punkty na osiach pozostają w odległościach a i b od środka.

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.

ms2d.superelipsa(a=4, b=3, n=3, x0=0, y0=0)

a=4
Dodatnia skala pozioma.
b=3
Dodatnia skala pionowa.
n=3
Dodatni wykładnik sterujący kształtem obrysu.
x0=0
Współrzędna X środka.
y0=0
Współrzędna Y środka.

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

BRównanie, właściwości i dziedzina
|x-x0a|n+|y-y0b|n=1

Wymagane jest a, b, n > 0, a środek to (x0, y0). Dla n = 2 otrzymujemy elipsę, dla n = 1 romb, a dla n < 1 krzywą wklęsłą. F jest określona na całej płaszczyźnie.

Parametry a, b i n są dodatnie, a środek ma skończone współrzędne. Dzięki wartościom bezwzględnym F jest określona na całej płaszczyźnie także dla niecałkowitego n.

CDefinicja w Pythonie

def F(x, y, a=4, b=3, n=3, x0=0, y0=0):
    return abs((x - x0) / a) ** n + abs((y - y0) / b) ** n - 1

print(round(F(4, 0), 6))
rysuj_2(F)
DKrótki zapis lambda

Ten zapis dotyczy domyślnych parametrów.

rysuj_2(lambda x, y: abs((x - 0) / 4) ** 3 + abs((y - 0) / 3) ** 3 - 1)

Spróbuj sam

Wypróbuj n=0.5. Czy obszar otoczony krzywą nadal jest wypukły? Połącz w myśli dwa punkty jego wnętrza.

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