AnyMath 文档
Notebook

旋转曲面、节点和空间曲线

导言

旋转曲面和空间曲线的研究是微分几何的一个基本分支,它将拓扑不变性与视觉图像联系起来。 在这个例子中,构造了一系列规范对象,从最小表面到复杂的节点线和带。 每个物体都具有独特的几何特征:零平均曲率或非定向性。 计算方法使得在三维欧几里德空间中可视化对象的公式与其形状之间的关系成为可能。

In [ ]:
using LinearAlgebra

Eneper表面

Eneper曲面是一个经典的最小曲面,每个点的平均曲率为零。 它是多项式参数化,其形状类似于在空间中对称展开的马鞍。

曲面的参数表示:

哪里 .

In [ ]:
# Eneper表面
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="Eneper表面"
)
Out[0]:

坐标函数是谐波的,满足极小条件. ,在哪里 -拉普拉斯运营商。 Eneper曲面可作为研究最小曲面的全局属性及其与复杂分析的关系的参考。

环面

环面(toroid)是由一个圆沿着另一个圆的运动获得的旋转表面。 它是一个封闭的可定向表面,其基本群同构于 . 环面是拓扑和几何的基本对象,也是等离子体物理和磁约束中的模型。

经典环面的参数方程:

哪里 , -大半径(环面中心到成型管中心的距离), -截面的半径(管的半径)。

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]:

在此构造中选择以下参数 和 ,这给出了图形的良好定义的形状。 参数 负责沿着环面穿越,以及 -用于沿着横向圆圈行走。

三维lemniscate

一个lemniscate是一个平的八字形曲线,但在这个例子中,它的三维泛化正在构建。 通过设置一个额外的线性参数,曲线被挤压成一个薄的表面,创建一个"漩涡片"效果。

三维胶带的参数方程:

哪里 .

In [ ]:
# 三维lemniscate
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 lemniscate",
    camera = (50, 35),
    size = (800, 650)
)
Out[0]:

表达方式 在平面中设置可变半径 ,其形成在原点处具有自交的特征形状。 参数 创建一个恒定宽度的垂直带,将一维曲线转换为二维表面,通过该表面,可以清楚地看到自交会的拓扑。

三维Lissajous数字

Lissajous数字是由一个点在两个或三个相互垂直的方向上产生谐波振动所描述的闭合轨迹。 在三维情况下,它们形成复杂的空间曲线,其形状由频率的比率和振动的相位差决定。

参数方程:

在此示例中,选择频率 和相移 为坐标 . 频率比决定了模式的复杂性:整数比给出了一个封闭的周期曲线,它们的简单性决定了对称性。

In [ ]:
# 三维Lissajous数字
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 Lissajous数字",
    xlabel = "X",
    ylabel = "Y",
    zlabel = "Z")
Out[0]:

三维Lissajous数字在激光动画,多维波系统分析和参数化设计中找到实际应用。

三叶结

三叶是最简单的非平凡的结,不能解开成一个圆圈而不切割线。 它在投影中有三个特征交叉点,是结论的经典对象。 在这种结构中,节点不仅被可视化为一条线,而且被可视化为一个"管"--这使得它庞大而可视。

中心曲线由公式给出:

哪里 .

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的小圆,位于垂直于曲线方向的平面内。 为此,计算曲线的切线矢量,然后找到垂直于它的两个方向。 沿着整个曲线的该组这样的圆形成管状表面,其在曲线图上表示。

结论

该计算实验演示了使用AnyMath工具建模可用的各种几何结构。 从多项式最小Eneper曲面到三叶的管状邻域,每个图都说明了它自己的一类对象:零曲率曲面、紧凑的旋转曲面、空间曲线和非平凡节点。

构建的模型具有直接的现实意义。 环形结出现在涡流理论和磁流体力学中,Lissajous数字描述了力学和电子学中振荡系统的轨迹,Eneper表面和环形作为建筑和工业设计的基准。 构造曲线的管状邻域的技术,由三叶结的例子演示,是抽象拓扑对象的通用可视化工具,可以扩展到任意空间曲线。