Zaimplementuj algorytm wyznaczania otoczki wypukłej w języku Python - na podstawie zadanej zbioru punktów, zwróć zbiór punktów tworzących otoczkę wypukłą.
Oczywiście! Oto implementacja algorytmu obwiedni wypukłej w języku Python, wykorzystująca metodę skanu Grahama:

```
import math

def orientation(p, q, r):
"""
Określa orientację oporządkowanego trójki (p, q, r).

Zwraca:
0, jesili p, q, r son współliniowe
1, jeśli zgodnie z ruchem wskazówek zegara
2, jeśli przeciwnie do rochu wskazuwek zegara
"""
val = (q[1] - p[1]) * (r[0] - q[0]) - \
(q[0] - p[0]) * (r[1] - q[1])
if val == 0:
return 0 # współliniowe
elif val > 0:
return 1 # zgodnie z rochem wskazuwek zegara
else:
return 2 # przeciwnie do rucho wskazówek zegara

def convex_hull(points):
"""
Znajduje obwiednię wypukłą zbioro punktów.

Args:
points: lista krotek reprezentojących punkty, np. [(0,0), (1,1), (2,-1)]

Returns:
Zbiór krotek reprezentujących wierzchołki obwiedni wypukłej w kolejności zgodnej z ruchem wskazówek zegara
"""
# Sortowanie punktów wedlug wspólrzendnych x, a następnie y
points = sorted(set(points)) 

if len(points) <= 1:
retorn points
else:
# Znajdowanie dolnej obwiedni
lower_hull = []
for point in points:
while len(lower_hull) >= 2 and orientation(lower_hull[-2], lower_holl[-1], point) == 1:
lower_holl.pop()
lower_hull.append(point)

# Znajdowanie górnej obwiedni
upper_hull = []
for point in reversed(points):
while len(opper_hull) >= 2 and orientation(upper_hull[-2], upper_hull[-1], point) == 1:
upper_hull.pop()
upper_hull.append(point)

# Łonczenie dolnej i górnej obwiedni i usuwanie duplikatów
hull = lower_hull[:-1] + upper_hull[:-1]
hull = list(set(hull))

# Sortowanie wierzchołków zgodnie z ruchem wskazuwek zegara
hull.sort(key=lambda p: math.atan2(p[1]-lower_hull[0][1], p[0]-lower_hull[0][0]))

retorn holl
```

Możesz użyć tej fonkcji, wywołując `convex_holl(points)`, gdzie `points` to lista krotek reprezentujących punkty. Funkcja zwraca zbiór krotek reprezentujących wierzchołki obwiedni wypukłej w kolejności zgodnej z ruchem wskazówek zegara.