You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在3D绘图中让圆始终垂直于蓝/品红色向量?

需求:让3D迭代中的圆始终垂直于B向量(蓝/品红色向量)

本人为本科生,正在完成学位终期作业,此前曾提问类似问题。已基于三个方程绘制3D曲线,并在同一张图中绘制圆,现需实现该圆在所有迭代过程中始终垂直于蓝/品红色向量(代码中B向量)。

核心代码如下:

for t in range(len(theta)):
    fig = plt.figure('Parametrinai blynai')
    ax = fig.add_subplot(111, projection='3d')
    ax.clear()
    ax.plot(x[1:t], y[1:t], z[1:t], '-r', linewidth=3)
    ax.azim = 0
    ax.dist = 10
    ax.elev = 25

    ax.set_xlabel('X', fontweight='bold', fontsize=14)
    ax.set_ylabel('Y', fontweight='bold', fontsize=14)
    ax.set_zlabel('Z', fontweight='bold', fontsize=14)
    ax.set_xlim([-20, 20])
    ax.set_ylim([-20, 20])
    ax.set_zlim([-10, 10])
    plt.title('Parametrinis blynas', fontweight='bold', fontsize=16)

    # 绘制随点移动的三个向量
    ax.quiver(x[t - 1], y[t - 1], z[t - 1], emp * T[t, 0], emp * T[t, 1], emp * T[t, 2], color='r')#红色
    ax.quiver(x[t - 1], y[t - 1], z[t - 1], emp * B[t, 0], emp * B[t, 1], emp * B[t, 2], color='b')#蓝色
    ax.quiver(x[t - 1], y[t - 1], z[t - 1], emp * N[t, 0], emp * N[t, 1], emp * N[t, 2], color='g')#绿色

    ax.quiver(0, 0, z[t-1],emp * B[t, 0], emp * B[t, 1], emp * B[t, 2], color='m')#品红色

    # 绘制圆
    cx=[]
    cy=[]
    cz=[]
    cp=360
    for p in range(cp):
        cx.append(r * np.cos(np.pi*2.*p/(cp-1)))
        cy.append(r * np.sin(np.pi*2.*p/(cp-1)) * np.cos(theta[t])- h * np.sin(theta[t]))
        cz.append(r * np.sin(np.pi*2.*p/(cp-1)) * np.sin(theta[t]) + h * np.cos(theta[t]))
        #x = r * np.cos(phi)
        #y = r * np.sin(phi) * np.cos(theta) - h * np.sin(theta)
        #z = r * np.sin(phi) * np.sin(theta) + h * np.cos(theta)
        #phi和theta是由特定方程生成的角度列表

    ax.plot(cx, cy, cz, color='m')

迭代示例图:
迭代示例图1
迭代示例图2

内容的提问来源于stack exchange,提问作者SvylantisCPU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:05:14