2010-07-08 7 views

Répondre

5

Cela ne peut pas être fait en utilisant la classe AffineTransform. Voir l'article sur Wikipedia transformation affine:

En général, une transformation affine est composée d'une transformation linéaire (rotation, mise à l'échelle ou au cisaillement) et une translation (ou "shift").

Vous avez besoin d'une forme de transformation de perspective. De http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PerspectiveTransform.html

Une transformation de perspective est capable de cartographier un quadrilatère arbitraire dans un autre quadrilatère quelconque, tout en conservant la rectitude des lignes. Contrairement à une transformation affine, le parallélisme des lignes dans la source n'est pas nécessairement conservé dans la sortie.

De http://answers.google.com/answers/threadview/id/515829.html

L'API Java Advanced Imaging vous permet d'effectuer facilement transformer la perspective.

Comme dans Java2D et Java3D, ces routines sont optimisées, elles ne sont pas fonctionnent de la manière habituelle interprétée par Java - elles sont donc très rapides comme .

Le Jaï téléchargeable à partir

http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html

Vous pouvez trouver des informations sur la façon de gérer la perspective de transformation en:

http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/

+0

Merci pour l'aide, mais je ne trouve pas par exemple comment utiliser la transformation de perspective JAI, et ses JavaDocs sont assez peu informatifs ... – newbie

+0

Quelqu'un m'a aidé avec la partie mathématique de cette question ici http://stackoverflow.com/questions/4217370/how-can-i-project-an-arbitrary-plane-identified-by-4-points-unto-a-2d-plane – Scott

0

Si vous voulez faire beaucoup de dessin rapide en 3D alors je suggère à la recherche dans une solution de rendu 3D telles que OpenGL/JOGL.

S'il est juste une transformation unique rapide, alors vous pouvez simuler ce assez facilement par

  • Looping sur toutes les lignes 2.
  • Mise à l'échelle de la ligne correspondante 1. et le tirant sur la ligne en 2, en l'étirant à la bonne proportion (vous aurez besoin de quelques calculs de base pour résoudre ce problème)