| 9 | import scipy.ndimage as nimg |
| 10 | |
| 11 | def look_at(eye, target, up, dtype=None): |
| 12 | forward = (target - eye)/np.linalg.norm(target - eye) |
| 13 | side = (np.cross(forward, up))/np.linalg.norm(np.cross(forward, up)) |
| 14 | up = (np.cross(side, forward)/np.linalg.norm(np.cross(side, forward))) |
| 15 | |
| 16 | return np.array(( |
| 17 | (side[0], up[0], -forward[0], 0.), |
| 18 | (side[1], up[1], -forward[1], 0.), |
| 19 | (side[2], up[2], -forward[2], 0.), |
| 20 | (-np.dot(side, eye), -np.dot(up, eye), np.dot(forward, eye), 1.0) |
| 21 | ), dtype=np.float32) |
| 22 | |
| 23 | def perspective(xmax, ymax, near, far): |
| 24 | left, right = -xmax, xmax |