Git Product home page Git Product logo

algorytmy-geometryczne's Introduction

Algorytmy-Geometryczne

Uwagi

  • Dla osób korzystających z systemu operacyjnego Windows, zalecamy wykorzystanie instalację wszystkiego na WSL, szczególnie przydatne, kiedy już zostały podjęte próby instalacji condy bez standardowych ścieżek instalacji lub kiedy na samym Windowsie coś nie działa
  • Czasami zdarza się, że trzeba podmienić python3 na python, jest to zależne od wielu czynników

Instalacja

Najpierw sklonuj repozytorium będąc w folderze do którego chcesz je sklonować, na przykład za pomocą:

git clone https://github.com/aghbit/Algorytmy-Geometryczne.git

Pobierz Anacondę, odpal Anaconda Prompt i przejdź do folderu Algorytmy-Geometryczne, tam stwórz środowisko:

conda create --name bit-alg python=3.9
conda activate bit-alg

Następnie uruchom:

python3 setup.py sdist
python3 -m pip install -e .

Otwórz Jupyter Notebook z listy programów w Conda Navigator, pamiętaj, żeby na górze zaznaczyć Twoje środowisko (bit-alg). Jeśli nie znajduje modułu bit-alg spróbój zrestartować środowisko i jupytera:

conda deactivate
conda activate bit-alg

W celu uniknięcia błędów wziązanych ze ścieżkami do różnych wersji interpreterów pythona sugerujemy korzystanie z Linuxa, a na Windowsie zainstalowanie WSL-a i właśnie w nim uruchamianie wszystkich komend

Przewodnik po wizualizacji

Inicjalizowanie klasy służącej do wizualizacji

vis = Visualizer()

Dodawanie tytułu

vis.add_title('Jakiś Tytuł')

Dodawanie siatki

vis.add_grid()

Dodawanie pojedynczych figur geometrycznych

vis = Visualizer()

# dodawanie tytułu
vis.add_title('Tytuł')

# dodawanie siatki
vis.add_grid()

# punkt = (x, y)
point = (3, 7)

# odcinek = ((x1, y1), (x2, y2))
line_segment = ((-1, 5), (0, 3))

# wielokąt [(x1, y1), (x2, y2), ..., (xn, yn)]
polygon = [(1, 2), (2, 5), (4, 5), (4, 2), (2, 1)]

# koło = (x, y, radius)
circle = (0, 7, 1)

# prosta = ((x1, y1), (x2, y2))
line = ((0, 2), (1, 5))

# półprosta = ((x1, y1), (x2, y2))
half_line = ((0, 0), (3, -2))

vis.add_point(point)
vis.add_line_segment(line_segment, color='orange')
vis.add_line(line, color='red')
vis.add_polygon(polygon, alpha=0.7)
vis.add_circle(circle, color='green')
vis.add_half_line(half_line, color='purple')

Wyświetlanie wykresu

vis.show()

single

Wyświetlanie gifa

vis.show_gif(interval=300)

single

Wyrównanie osi

vis.axis_equal()

plot

Zapisywanie wykresu

vis.save(filename='plot')

Zapisywanie gifa

vis.save_gif(filename='plot', interval=300)

Czyszczeine danych klasy

vis.clear()

Dodawanie wielu figur

vis = Visualizer()

# punkt = (x, y)
points = []
for i in range(-5, 6):
    points.append((i, i**2))

# odcinek = ((x1, y1), (x2, y2))
line_segments = []
for i in range(1, 6):
    line_segments.append(((-i, i**2 - 1), (i, i**2 + 1)))

# wielokąt [(x1, y1), (x2, y2), ..., (xn, yn)]
polygons = [
    [(-14, -3), (-13, 0), (-11, 0), (-11, -3), (-13, -4)],
    [(-9, -10), (-6, -10), (-10, -6)],
    [(-10, -11), (-10, -15), (-15, -10), (-11, -10)]
]

# okrąg = (x, y, radius)
circles = [
    (-7, 0, 1),
    (-5, 0, 1),
    (-6, -2, 1)
]

# prosta = ((x1, y1), (x2, y2))
lines = [
    ((-3, 0), (-2, -3)),
    ((-3, 2), (-2, -2)),
    ((-3, 4), (-2, 1))
]

# półprosta = ((x1, y1), (x2, y2))
half_lines = [
    ((-15, 10), (-15, 20)),
    ((-15, 10), (-10, 0)),
    ((-15, 10), (-20, 0))
]

vis.add_point(points, color='red')
vis.add_line_segment(line_segments)
vis.add_circle(circles, color='green')
vis.add_line(lines)
vis.add_polygon(polygons)
vis.add_half_line(half_lines, color='purple')

multiple

Usuwanie figur geometrycznych

vis = Visualizer()

points = [
    (0, 0), (1, 0), (1, 1), (0, 1), (-1, 1),
    (-1, 0), (-1, -1), (0, -1), (1, -1)
]

vis.add_point(points)
to_remove = []

for point in points[1:]:
    ls = vis.add_line_segment(((0, 0), point))
    to_remove.append(ls)

for ls in to_remove:
    vis.remove_figure(ls)

vis.show_gif()

removal

Struktura repozytorium

Całe repozytorium składa się z sześciu folderów:

  • lab1
  • lab2
  • lab3
  • lab4
  • tests
  • visualizer
  • lab1-4

    Tutaj znajdują się przygotowane notebooki, które musisz wypełnic. Każdy katalog odpowiada jednemu laboratorium

    tests

    Kod który wykonuje testy w poszczególnych notebookach znajduje się w plikach test1.py, test2.py, test3.py, test4.py. Z kolei w folderach test2_tests, test3_tests, test4_tests można znaleźć pliki wejściowe i wyjściowe na podstawie których testowane są algorytmy, które są do napisania w ramach poszczególnych laboratoriów.

    visualizer

    Jest to katalog w którym zaimplementowane jest narzędzie graficzne. Opis korzystania z narzędzia graficznego znajduje się w README (jeden paragraf wyżej). Dodatkowo warto zapoznać się z plikiem demo.ipynb w którym pokazane jest zastosowanie narzędzia graficznego już w samym notebooku

    algorytmy-geometryczne's People

    Contributors

    rusiek avatar radoslawrolka avatar mdbrnowski avatar werwojtas avatar panyloi avatar puszekjuliuszek avatar c-i-a-s-t-e-k avatar spontaniczny avatar jakmro avatar ktwsz avatar kamilbur avatar

    Stargazers

    Eryk Olejarz avatar Krystian Madej avatar  avatar  avatar  avatar  avatar Krzysztof Swędzioł avatar  avatar

    Watchers

    Zhylko Dima avatar  avatar  avatar  avatar

    algorytmy-geometryczne's Issues

    Redakcja notebooków

    oryginalnie komentarz w #14

    • zmienić rozmiar tekstu, moim zdaniem warto w ogóle nie używać tego font size=5
    • zmienić det na \det we wzorach LaTeX
    • używać \left( i \right), jeśli np. wewnątrz nawiasu jest ułamek
    • używanie nawiasów ostrokątnych zamiast kwadratowych jako końce przedziału jest mocno podstawówkowe i występuje tylko w nielicznych (zwykle starszych) polskich pracach -- może warto od tego odejść?

    Instalacja przez pip

    Pomysł do rozważenia.

    W skrócie chodzi o to, żeby użytkownik mógł sobie sklonować repo i po prostu uruchomić

    python -m pip install -e .
    

    Nie trzeba będzie później myśleć o tym, gdzie uruchomić Jupytera, będzie działać w VS Code i ogólnie fajnie, bo paczka bitalg będzie zainstalowana globalnie dla użytkownika.

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.