nuclear@0: #include "vmathmat.h" nuclear@0: #include "vmath.h" nuclear@0: nuclear@0: void Matrix4x4::lookat(const Vector3 &pos, const Vector3 &targ, const Vector3 &up) nuclear@0: { nuclear@0: Vector3 vk = normalize(targ - pos); nuclear@0: Vector3 vj = normalize(up); nuclear@0: Vector3 vi = normalize(cross(vk, vj)); nuclear@0: vj = cross(vi, vk); nuclear@0: nuclear@0: Matrix4x4 m( nuclear@0: vi.x, vi.y, vi.z, 0, nuclear@0: vj.x, vj.y, vj.z, 0, nuclear@0: -vk.x, -vk.y, -vk.z, 0, nuclear@0: 0, 0, 0, 1); nuclear@0: translate(-pos.x, -pos.y, -pos.z); nuclear@0: *this = *this * m; nuclear@0: }