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()