Comment faire pour convertir un point 3D en 2D projection en perspective?

Je suis actuellement en train de travailler avec l'aide de courbes de Bézier et les surfaces de dessiner la fameuse théière de l'Utah. À l'aide de courbes de Bézier patchs de 16 points de contrôle, j'ai été en mesure de tirer la théière et les afficher à l'aide d'un "monde à la caméra" est la fonction qui donne la capacité à tourner la résultante d'une théière, et je suis actuellement à l'aide d'une projection orthographique.

Le résultat est que j'ai un "plat" théière, qui est attendu que l'objet de la projection orthographique est de préserver les lignes parallèles.

Cependant, je voudrais utiliser une projection en perspective pour donner la théière de profondeur. Ma question est, comment fait-on prendre la 3D xyz vertex retourné à partir de la "world à la caméra" de la fonction, et de le convertir en 2D coordonner. Je suis désireux d'utiliser le plan de projection de z=0, et permettre à l'utilisateur de déterminer la distance focale et la taille de l'image en utilisant les touches fléchées du clavier.

Je suis de la programmation, cette en java et ont tous de l'entrée de gestionnaire d'événement mis en place, et ont également écrit une matrice de la classe qui gère à la multiplication de matrice de base. J'ai lu dans wikipédia et d'autres ressources pour un certain temps, mais je n'arrive pas à obtenir une poignée sur la façon dont on réalise cette transformation.