为什么尝试使用 Line3D 对象时 matplotlib 3d 动画不起作用

我有这个代码:


import matplotlib.pyplot as plt 

import mpl_toolkits.mplot3d.axes3d as plt3d

import mpl_toolkits.mplot3d.art3d as artplt3d

import matplotlib.animation as animation


import numpy as np

import math 


def animateBeta():


    def translate(segment_, xTr_, yTr_, zTr_):

        translationMatrix = np.array([

            [1, 0, xTr_],

            [0, 1, yTr_],

            [0, 0, zTr_]

        ])


        return np.matmul(translationMatrix, segment_)


    def rotate(vec_, xRotate_, yRotate_, zRotate_):

        xMat = np.array([

            [1,0,0],

            [0,math.cos(xRotate_), -math.sin(xRotate_)],

            [0, math.sin(xRotate_), math.cos(xRotate_)]

        ])


        yMat = np.array([

            [math.cos(yRotate_), 0, math.sin(yRotate_)],

            [0, 1, 0],

            [-math.sin(yRotate_), 0, math.cos(yRotate_)]

        ])


        zMat = np.array([

            [math.cos(zRotate_), -math.sin(zRotate_), 0],

            [math.sin(zRotate_), math.cos(zRotate_), 0],

            [0, 0, 1]

        ])


        rotationMatrix = np.matmul(zMat, np.matmul(yMat, xMat))


        return np.matmul(rotationMatrix, vec_)


    segment = [

        [0,0],

        [0,0],

        [1, -1]

    ]


    fig = plt.figure()

    ax = plt3d.Axes3D(fig)

    line, = ax.plot(segment[0], segment[1], zs=segment[2], color = 'b')

    artplt3d.line_2d_to_3d(line)


    print(line.__class__)


    def animate(i):

        s0 = [0,0,1]

        s1 = [0,0,-1]

        s1 = translate(rotate(translate(s1, -s0[0], -s0[1], -s0[2]), -i*(math.pi/180),0,-i*(math.pi/180)), s0[0], s0[1], s0[2])

        segment = np.concatenate((np.reshape(s0, (3,-1)),np.reshape(s1, (3,-1))), axis=1)


当使用注释data = ax.plot(segment[0], segment[1], segment[2], color = 'b')行而不是以下两行时,它可以工作(但我试图这样做,以便在顶部绘制新行时不会绘制先前的行)。


如果您按原样使用代码,则动画看起来很奇怪。


我有一个理论并line_2d_to_3d没有按预期发挥作用,但我不确定。


慕田峪4524236
浏览 75回答 1
1回答

慕容3067478

好吧,我使用的是 ax.plot 而不是plot3D,我的印象是使用 ax.plot 时绘图更正确
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python