How do we make objects further away from us look smaller so they appear more realistic?

Doing so would involve making parallel lines intersect at a distance, but we know that's not possible with linear transformation.

However, a linear transformation of homogeneous coordinates can.

Addtionally, how do we know how the cube should rotate if we drag its vertex?

It requires some careful matrix transformations...

zoom 1x 10x

Oops ... your browser doesn't support the HTML5 canvas element