Voila je développe un logiciel qui s'apparente à une bibliothèque (API Java).

Dans cette bibliothèque, il y a une classe de rendu 3D (ZBuffer) en perspective.

Pour le moment, la perspective est arrangée avec un seul point de fuite central à l'image (caméra "pinhole").

La caméra est définie par deux points:
le point de vue (Camera.camera: Point3D)
le point "lookat" (Camera.lookat: Point3D)
et par un nombre compris entre 0 et 1 (Camera.planproj : Double)

Je calcule la matrice du repère de la caméra (m: Matrix33)

vz = (lookat-camera)/distance(lookat, camera) // Vecteur dans la direction de la caméra)
vx = (vz^AxeY)/norme(vz^AxeY)
vy = (vz^vx)/norme(vz^vx)

cela me donne une matrice m = (vx, vy, vz)

Ensuite je calcule pour chaque point p de l'espace 3D que je veux rendre dans l'image du zbuffer:
p2D = m*(p-camera);


Est-ce que cela vous semble correct?

Parce que ça ne fonctionne pas.

Le programme est disponible sur http://github.com/ibiiztera/emptycanvas

Ce qui fonctionnait bien, c'est le zbuffer à l'horizontale avec lookat en (0,0,0)
(dans la nouvelle version camera en (0,0,-c) lookat(0,0,0) planproj(0.1))

Merci pour une toute aide éventuelle...

EDIT
Après avoir lu le message épinglé, j'ai décidé d'utiliser la bilbiothèque colt du cern.

Seulement la question reste: est-ce que le principe expliqué ci-dessus est valable?

EDIT

Finalement après quelques tests, je me rends compte que j'utilise bien la bonne formule.
A+