Essential Mathematics for Games and Interactive Applications: A Programmer's Guide, Second Edition