Python 在3D软件光栅化器中沿X轴旋转相机时Z轴出现奇怪的缩放/减小

Python 在3D软件光栅化器中沿X轴旋转相机时Z轴出现奇怪的缩放/减小,python,matrix,graphics,3d,rendering,Python,Matrix,Graphics,3d,Rendering,我的问题是,当我试图通过围绕原点(也是相机位置)旋转世界来模拟相机在X轴上的旋转(在我正在使用的基本光栅化器中)时,我旋转点的次数越多,就会出现奇怪的缩放 基本上,我绕X轴旋转一个3D点越多,它的Z值减少的越多,直到我旋转它超过180度,然后Z值开始再次增加,一旦总旋转=360度,就会重置 这就产生了相机旋转越快放大的效果,这根本不是我想要的 下面是我用来旋转向量的代码(python): def rotate(self,x,y,z): pitch = x roll = y

我的问题是,当我试图通过围绕原点(也是相机位置)旋转世界来模拟相机在X轴上的旋转(在我正在使用的基本光栅化器中)时,我旋转点的次数越多,就会出现奇怪的缩放

基本上,我绕X轴旋转一个3D点越多,它的Z值减少的越多,直到我旋转它超过180度,然后Z值开始再次增加,一旦总旋转=360度,就会重置

这就产生了相机旋转越快放大的效果,这根本不是我想要的

下面是我用来旋转向量的代码(python):

def rotate(self,x,y,z):
    pitch = x
    roll = y
    yaw = z

    cosa = math.cos(yaw)
    sina = math.sin(yaw)

    cosb = math.cos(pitch)
    sinb = math.sin(pitch)

    cosc = math.cos(roll)
    sinc = math.sin(roll)

    Axx = cosa*cosb
    Axy = cosa*sinb*sinc - sina*cosc
    Axz = cosa*sinb*cosc + sina*sinc

    Ayx = sina*cosb
    Ayy = sina*sinb*sinc + cosa*cosc
    Ayz = sina*sinb*cosc - cosa*sinc

    Azx = -sinb
    Azy = cosb*sinc
    Azz = cosb*cosc

    self.x = Axx*self.x+Axy*self.y+Axz*self.z
    self.y = Ayx*self.x+Ayy*self.y+Ayz*self.z
    self.z = Azx*self.x+Azy*self.y+Azz*self.z
很抱歉,如果这看起来像是我希望有人能简单地为我解决所有的问题,我对3D渲染作为一个整体来说是新手,并不真正知道正确的术语来准确地表达我的问题