如何在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')
迭代示例图:

内容的提问来源于stack exchange,提问作者SvylantisCPU
相关产品推荐
相关产品推荐

