Документация Engee
Notebook

Поверхности вращения, узлы и пространственные кривые

Введение

Изучение поверхностей вращения и пространственных кривых составляет фундаментальный раздел дифференциальной геометрии, связывающий топологические инварианты с визуальными образами. В данном примере строится серия канонических объектов — от минимальных поверхностей до сложных узловых линий и лент. Каждый объект обладает уникальными геометрическими характеристиками: нулевой средней кривизной или свойствами неориентируемости. Вычислительные методы позволяют наглядно представить связь между формулой объекта и его формой в трёхмерном евклидовом пространстве.

In [ ]:
using LinearAlgebra

Поверхность Энепера

Поверхность Энепера — классическая минимальная поверхность, обладающая нулевой средней кривизной в каждой точке. Она является полиномиальной параметризацией, её форма напоминает седло, симметрично разворачивающееся в пространстве.

Параметрическое представление поверхности:

где .

In [ ]:
# Поверхность Энепера
u = range(-1.5, 1.5, length=50)
v = range(-1.5, 1.5, length=50)

U = repeat(u', length(v), 1)
V = repeat(v, 1, length(u))

X = U .- (U.^3)/3 .+ U .* V.^2
Y = V .- (V.^3)/3 .+ V .* U.^2
Z = U.^2 .- V.^2

surface(X, Y, Z;
    color=Z,
    colormap=:viridis,
    alpha=0.9,
    colorbar=false,
    ratio=:equal,
    title="Поверхность Энепера"
)
Out[0]:

Координатные функции являются гармоническими и удовлетворяют условию минимальности , где — оператор Лапласа. Поверхность Энепера служит эталоном для изучения глобальных свойств минимальных поверхностей и их связи с комплексным анализом.

Тороид

Тор (тороид) — это поверхность вращения, получаемая движением окружности вдоль другой окружности. Это замкнутая ориентируемая поверхность, фундаментальная группа которой изоморфна . Тор является базовым объектом топологии и геометрии, а также модельной фигурой в физике плазмы и магнитного удержания.

Параметрические уравнения классического тора:

где , — большой радиус (расстояние от центра тора до центра образующей трубки), — радиус сечения (радиус трубки).

In [ ]:
#Тороид
R, r = 2.0, 0.7
u = range(0, 2π, length=100)
v = range(0, 2π, length=50)
U = repeat(u', length(v), 1)
V = repeat(v, 1, length(u))
X = (R .+ r .* cos.(V)) .* cos.(U)
Y = (R .+ r .* cos.(V)) .* sin.(U)
Z = r .* sin.(V)
surface(X, Y, Z; c=:jet, colorbar=false, title="Тороид", alpha=1)
Out[0]:

В данном построении выбраны параметры и , что даёт хорошо выраженную форму фигуры. Параметр отвечает за обход вдоль тороида, а — за обход вдоль поперечной окружности.

Трёхмерная лемниската

Лемниската — это плоская кривая, имеющая форму восьмёрки, однако в данном примере строится её трёхмерное обобщение. Кривая выдавливается в тонкую поверхность путём задания дополнительного линейного параметра, создавая эффект "закрученного листа".

Параметрические уравнения трёхмерной ленты:

где .

In [ ]:
#Трёхмерная лемниската
u = range(0, 2π, length=300)    
v = range(-0.3, 0.3, length=30)
U, V = [u_i for u_i in u, _ in v], [v_j for _ in u, v_j in v]

x = @. (2 + cos(2U)) * cos(U)
y = @. (2 + cos(2U)) * sin(U)
z = @. sin(2U) + V

surface(x, y, z,
    fill_z = nothing,
    linewidth = 0,              
    linealpha = 0,               
    legend = false,
    aspect_ratio = :equal,
    colorbar = false,
    seriescolor = :thermal,
    alpha = 1.0,
    title = "3D-лемниската",
    camera = (50, 35),
    size = (800, 650)
)
Out[0]:

Выражение задаёт переменный радиус в плоскости , что формирует характерную фигуру с самопересечением в начале координат. Параметр создаёт вертикальную ленту постоянной ширины, превращая одномерную кривую в двумерную поверхность, через которую наглядно видна топология самопересечения.

Трёхмерные фигуры Лиссажу

Фигуры Лиссажу — это замкнутые траектории, описываемые точкой, совершающей гармонические колебания по двум или трём взаимно перпендикулярным направлениям. В трёхмерном случае они образуют сложные пространственные кривые, форма которых определяется соотношением частот и разностью фаз колебаний.

Параметрические уравнения:

В данном примере выбраны частоты и фазовый сдвиг для координаты . Отношения частот задают сложность узора: целочисленные соотношения дают замкнутую периодическую кривую, а их простота определяет симметрию.

In [ ]:
#Трёхмерные фигуры Лиссажу
t = range(0, 2π, length=1000)
x = sin.(3t .+ π/2)
y = sin.(4t)
z = sin.(5t)
plot(x, y, z,
    linewidth = 3,
    legend = false,
    aspect_ratio = :equal,
    title = "3D фигуры Лиссажу",
    xlabel = "X",
    ylabel = "Y",
    zlabel = "Z")
Out[0]:

Трёхмерные фигуры Лиссажу находят практическое применение в лазерной анимации, анализе многомерных волновых систем и параметрическом дизайне.

Трилистный узел

Трилистник — это простейший нетривиальный узел, который невозможно развязать в окружность без разрезания нити. Он имеет три характерных пересечения в проекции и является классическим объектом теории узлов. В данном построении узел визуализируется не просто как линия, а как "трубка" — это делает его объёмным и наглядным.

Центральная кривая задаётся формулами:

где .

In [ ]:
# Трилистный узел
u = range(0, 2π, length=200)
r_tube = 0.2  
# Основной узел
x0 = @. sin(u) + 2*sin(2u)
y0 = @. cos(u) - 2*cos(2u)
z0 = @. -sin(3u)
theta = range(0, 2π, length=20)
n_u = length(u)
n_theta = length(theta)
X = zeros(n_u, n_theta)
Y = zeros(n_u, n_theta)
Z = zeros(n_u, n_theta)

for i in 1:n_u
    # Касательный вектор
    tx = -cos(u[i]) - 4*cos(2u[i])
    ty = sin(u[i]) - 4*sin(2u[i])
    tz = -3*cos(3u[i])
    T = [tx, ty, tz]
    T = T / norm(T)
    N = nullspace(T') 
    # Создание трубки
    X[i, :] = x0[i] .+ r_tube .* (N[1, 1] .* cos.(theta) .+ N[1, 2] .* sin.(theta))
    Y[i, :] = y0[i] .+ r_tube .* (N[2, 1] .* cos.(theta) .+ N[2, 2] .* sin.(theta))
    Z[i, :] = z0[i] .+ r_tube .* (N[3, 1] .* cos.(theta) .+ N[3, 2] .* sin.(theta))
end

surface(X, Y, Z, 
    fill_z = nothing,
    fillcolor = :cool,
    linewidth = 0,
    legend = false,
    aspect_ratio = :equal,
    colorbar = false)
Out[0]:

Чтобы получить трубку, в каждой точке кривой строится маленькая окружность радиуса r = 0.2, лежащая в плоскости, перпендикулярной направлению кривой. Для этого вычисляется касательный вектор к кривой, а затем находятся два перпендикулярных ему направления. Совокупность таких окружностей вдоль всей кривой образует трубчатую поверхность, которая и представлена на графике.

Заключение

Данный вычислительный эксперимент демонстрирует многообразие геометрических структур, доступных для моделирования средствами Engee. От полиномиальной минимальной поверхности Энепера до трубчатой окрестности трилистника — каждая фигура иллюстрирует свой класс объектов: поверхности нулевой кривизны, компактные поверхности вращения, пространственные кривые и нетривиальные узлы.

Построенные модели имеют непосредственное прикладное значение. Торические узлы возникают в теории вихрей и магнитной гидродинамике, фигуры Лиссажу описывают траектории колебательных систем в механике и электронике, а поверхности Энепера и тороиды служат эталонами в архитектурном и промышленном дизайне. Методика построения трубчатых окрестностей кривых, продемонстрированная на примере трилистного узла, является универсальным инструментом визуализации абстрактных топологических объектов и может быть распространена на произвольные пространственные кривые.