def project(self, win_width, win_height, fov, viewer_distance):
factor = fov / (viewer_distance + self.z)<EOL>x = self.x * factor + win_width / <NUM_LIT:2><EOL>y = -self.y * factor + win_height / <NUM_LIT:2><EOL>return Point3D(x, y, <NUM_LIT:1>)<EOL>
Transforms this 3D point to 2D using a perspective projection.