def update()

in jsuarez/extra/embyr_deprecated/embyr/oldnewapi.py [0:0]


    def update(self, t):
        print(1/t)
        self.t += t
        rad = 80
        sz = 500
        pi = 3.14159265
        

        r = self.rotate
        x = r.x + r.xVol
        y = r.y + r.yVol

        x = x / sz
        y = y / sz
        yclip = np.clip(y, -pi/2, 0)

        xz_x = np.cos(x)
        xz_z = np.sin(x)

        yz_y = np.cos(yclip)
        yz_z = np.sin(yclip)

        xz = np.array([
            [xz_x, 0, -xz_z],
            [0   , 1,  0   ],
            [xz_z, 0,  xz_x]])

        yz = np.array([
            [1, 0,    0    ],
            [0, yz_y, -yz_z],
            [0, yz_z, yz_y]])

        #Find cylindrical xz plane rotation
        rot_xz = rad*np.dot(xz, self.vec)
        xx, _, zz = rot_xz
        xz_vec = np.array([xx, 0, zz])

        #Find spherical yz plane rotation
        _, yy, zn = np.dot(yz, self.vec)
        xz_norm = zn

        #For x, z: shrink to position of spherical rotation
        #For y: use height from spherical rotation
        vec = np.array([xx*xz_norm, -rad*yy, zz*xz_norm])

        #Zoom factor
        zoom = Zoom.clipZoom(self.zoom.zoom)
        vec = vec * zoom

        p = self.pan
        x = p.x + p.xVol
        z = p.y + p.yVol

        x = 10*x / sz
        z = -10*z / sz

        #Horizontal component
        unit_y = np.array([0, 1, 0])
        xx, _, zz = np.cross(rot_xz, unit_y)
        norm = np.sqrt(xx**2 + zz**2)
        xh, zh = x*xx/norm, x*zz/norm

        #Depth component
        xx, _, zz = -xz_vec
        norm = np.sqrt(xx**2 + zz**2)
        xd, zd = z*xx/norm, z*zz/norm

        xx, yy, zz = vec
        vec = np.array([xx+xh+xd, yy, zz+zh+zd])
        self.renderer.camera.look_at([-xh-xd, 0, -zh-zd])
        self.renderer.camera.pos = vec.tolist()