28 三维箭头 quiver3D

28 三维箭头 quiver3D

用途

三维矢量场方向,电场、磁场、电流密度的空间指向。

示例(5 张)

28-1 三维电场矢量分布

三维电场矢量分布

28-2 载流线圈的三维磁场矢量

载流线圈的三维磁场矢量

28-3 母线室三维气流矢量

母线室三维气流矢量

28-4 三维空间潮流方向矢量

三维空间潮流方向矢量

28-5 接地网三维电流密度矢量

接地网三维电流密度矢量

代码

以下 5 个函数取自 code/第四批_三维扩展261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。

# 摘自 code/第四批_三维扩展261107.py

def q3_01():
    """三维电场矢量分布。"""
    fig, ax = new_fig3d(left=0.13)
    g = np.linspace(-1, 1, 6)
    X, Y, Z = np.meshgrid(g, g, g)
    R = np.sqrt(X ** 2 + Y ** 2 + Z ** 2) + 0.15
    Ex, Ey, Ez = X / R ** 3, Y / R ** 3, Z / R ** 3
    ax.quiver3D(X, Y, Z, Ex, Ey, Ez, length=0.11, normalize=True,
                color=C1, linewidth=0.6, arrow_length_ratio=0.35)
    ax.set_xlabel("横向 " + IT["x"] + " / m", labelpad=2)
    ax.set_ylabel("纵向 " + IT["y"] + " / m", labelpad=2)
    ax.set_zlabel("高度 " + IT["z"] + " / m", labelpad=2)
    ax.view_init(elev=24, azim=-126)
    save(fig, "28_三维箭头", "28_三维箭头_三维电场矢量")

def q3_02():
    """载流线圈的三维磁场矢量。"""
    fig, ax = new_fig3d(left=0.13)
    g = np.linspace(-1, 1, 6)
    X, Y, Z = np.meshgrid(g, g, g)
    R2 = X ** 2 + Y ** 2 + 0.08
    Bx = -Y / R2
    By = X / R2
    Bz = 0.55 * Z
    ax.quiver3D(X, Y, Z, Bx, By, Bz, length=0.10, normalize=True,
                color=C3, linewidth=0.6, arrow_length_ratio=0.35)
    ax.set_xlabel("横向 " + IT["x"] + " / m", labelpad=2)
    ax.set_ylabel("纵向 " + IT["y"] + " / m", labelpad=2)
    ax.set_zlabel("高度 " + IT["z"] + " / m", labelpad=2)
    ax.view_init(elev=26, azim=-124)
    save(fig, "28_三维箭头", "28_三维箭头_三维磁场矢量")

def q3_03():
    """母线室三维气流矢量。"""
    fig, ax = new_fig3d(left=0.13)
    g = np.linspace(0, 1, 5)
    X, Y, Z = np.meshgrid(g, g, g)
    U = 1.0 + 0.3 * np.sin(Y * 3)
    V = 0.25 * np.sin(X * 4)
    W = -0.35 * (Z - 0.5)
    ax.quiver3D(X, Y, Z, U, V, W, length=0.13, normalize=True,
                color=C1, linewidth=0.6, arrow_length_ratio=0.35)
    ax.set_xlabel("柜宽", labelpad=2)
    ax.set_ylabel("柜深", labelpad=2)
    ax.set_zlabel("柜高", labelpad=2)
    ax.view_init(elev=22, azim=-122)
    save(fig, "28_三维箭头", "28_三维箭头_母线室气流")

def q3_04():
    """三维空间潮流方向矢量。"""
    fig, ax = new_fig3d(left=0.13)
    pts = np.array([[0, 0, 0], [2, 1, 1], [2, -1, 2], [4, 0.6, 1.6], [4, -0.6, 2.6]])
    edges = [(0, 1, 0.62), (0, 2, 0.48), (1, 3, 0.41), (2, 4, 0.33)]
    for a, b, w in edges:
        d = pts[b] - pts[a]
        ax.quiver3D(*pts[a], *d, length=np.linalg.norm(d) * 0.88,
                    normalize=True, color=C1, linewidth=1.0,
                    arrow_length_ratio=0.28)
    ax.scatter(pts[:, 0], pts[:, 1], pts[:, 2], s=22, color=C2, depthshade=False)
    ax.set_xlabel("东向距离 " + IT["x"] + " / km", labelpad=2)
    ax.set_ylabel("北向距离 " + IT["y"] + " / km", labelpad=2)
    ax.set_zlabel("高度 " + IT["z"] + " / 100 m", labelpad=2)
    ax.view_init(elev=24, azim=-128)
    save(fig, "28_三维箭头", "28_三维箭头_三维潮流方向")

def q3_05():
    """接地网三维电流密度矢量。"""
    fig, ax = new_fig3d(left=0.13)
    g = np.linspace(-2, 2, 5)
    X, Y, Z = np.meshgrid(g, g, np.array([0.2, 1.0, 2.2]))
    R = np.sqrt(X ** 2 + Y ** 2 + (Z + 0.8) ** 2) + 0.4
    Jx, Jy, Jz = X / R ** 2, Y / R ** 2, 0.35 / R ** 2
    ax.quiver3D(X, Y, Z, Jx, Jy, Jz, length=0.18, normalize=True,
                color=C3, linewidth=0.6, arrow_length_ratio=0.35)
    ax.set_xlabel("东向距离 " + IT["x"] + " / m", labelpad=2)
    ax.set_ylabel("北向距离 " + IT["y"] + " / m", labelpad=2)
    ax.set_zlabel("深度 " + IT["z"] + " / m", labelpad=2)
    ax.view_init(elev=22, azim=-126)
    save(fig, "28_三维箭头", "28_三维箭头_三维电流密度")

说明

  • 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
  • 图内不放标题,图题由本文件的二级/三级标题承担。
  • 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。
posted @ 2026-11-07 08:36  小青蛙电气  阅读(3)  评论(0)    收藏  举报