Computer Graphics: A Programming Approach