forked from:  Example: Perspective projection

