Создание кривой Безье

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом уроке мы узнаем, как создать кривую Безье с использованием библиотеки Matplotlib для Python. Кривая Безье - это математическая кривая, которая широко используется в компьютерной графике для создания гладких и эстетически привлекательных форм. Мы создадим простой пример кривой Безье с использованием объекта PathPatch Matplotlib.

Советы по работе с ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48891{{"Создание кривой Безье"}} matplotlib/figures_axes -.-> lab-48891{{"Создание кривой Безье"}} matplotlib/line_plots -.-> lab-48891{{"Создание кривой Безье"}} python/lists -.-> lab-48891{{"Создание кривой Безье"}} python/tuples -.-> lab-48891{{"Создание кривой Безье"}} python/importing_modules -.-> lab-48891{{"Создание кривой Безье"}} python/data_visualization -.-> lab-48891{{"Создание кривой Безье"}} end

Импорт библиотек

Для создания кривой Безье с использованием Matplotlib нам нужно импортировать необходимые библиотеки. Мы импортируем matplotlib.pyplot для создания графика и matplotlib.patches для создания объекта PathPatch.

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.path as mpath

Создание пути

Далее мы создадим объект Path для кривой Безье. Объект Path принимает список вершин и кодов, которые определяют тип пути между вершинами. В этом случае мы будем использовать код MOVETO, чтобы переместиться в начальную точку, за которым следуют два кода CURVE3, чтобы указать точки управления и конечную точку, и, наконец, код CLOSEPOLY, чтобы закрыть путь.

Path = mpath.Path

bezier_path = Path([(0, 0), (1, 0), (1, 1), (0, 0)],
                   [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY])

Создание объекта PathPatch

Теперь, когда у нас есть объект Path, мы можем создать объект PathPatch, который будет использоваться для рисования кривой Безье на графике. Мы установим facecolor в 'none', чтобы нарисовалась только кривая, а не заливалась.

bezier_patch = mpatches.PathPatch(bezier_path, fc="none")

Создание графика

Теперь мы можем создать график, добавив объект PathPatch на оси и нарисовав красную точку, которая должна лежать на кривой. Также мы установим заголовок графика в 'Bezier Curve'.

fig, ax = plt.subplots()

ax.add_patch(bezier_patch)
ax.plot([0.75], [0.25], "ro")
ax.set_title('Bezier Curve')

plt.show()

Завернный код должен выглядеть так:

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.path as mpath

Path = mpath.Path

bezier_path = Path([(0, 0), (1, 0), (1, 1), (0, 0)],
                   [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY])

bezier_patch = mpatches.PathPatch(bezier_path, fc="none")

fig, ax = plt.subplots()

ax.add_patch(bezier_patch)
ax.plot([0.75], [0.25], "ro")
ax.set_title('Bezier Curve')

plt.show()

Резюме

В этом уроке мы узнали, как создать кривую Безье с использованием библиотеки Matplotlib для Python. Мы использовали объекты Path и PathPatch для создания кривой и добавили ее на график. Также мы нанесли красную точку на кривую, чтобы показать, что она лежит на кривой. Кривая Безье широко используется в компьютерной графике для создания гладких и эстетически привлекательных форм.