Computer graphics : a programming approach