2010-07-08 15 views

Odpowiedz

5

Nie można tego zrobić przy użyciu klasy AffineTransform. Zobacz artykuł w Wikipedii na przekształcenie afiniczne:

Ogólnie, transformacja afiniczna składa przekształceń liniowych (obrót, skalowanie i ścinanie) i tłumaczeniem (lub „Shift”).

Potrzebna jest jakaś forma transformacji perspektywy. Z http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/PerspectiveTransform.html

Transformacja perspektywicznym może przypisywać dowolną czworoboku do innego dowolnego czworoboku z zachowaniem prostoliniowości linii. W przeciwieństwie do transformacji afinicznej, równoległość linii w źródle niekoniecznie zachowuje się na wyjściu.

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

API Java Advanced Imaging pozwala na łatwe wykonywanie perspektywa przekształcać.

Podobnie jak w Java2D i Java3D, procedury te są zoptymalizowane, nie są one uruchamiane w zwykły sposób interpretowany java - więc są one bardzo szybkie, jak dobrze dobrze.

JAI jest do pobrania z

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

można znaleźć informacje o tym, jak uruchomić perspektywa przekształcić w:

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

+0

Dzięki za pomoc, ale nie mogę znaleźć każdy przykład korzystania z transformacji perspektywy JAI, a to JavaDocs są dość nieinformacyjne ... – newbie

+0

Ktoś pomógł mi z częścią matematyczną tego pytanie tutaj http://stackoverflow.com/questions/4217370/how-can-i-project-an-arbitrary-plane-identified-by-4-points-unto-a-2dplane – Scott

0

Jeśli chcesz zrobić dużo fast rysunku w 3D następnie Sugerowałbym patrząc w renderingu 3D rozwiązania takie jak OpenGL/Jogl.

Jeśli jest to tylko jednorazowa szybkie przekształcenie następnie można symulować to dość łatwo

  • pętli na wszystkich liniach w 2.
  • Skalowanie odpowiednią linię w 1. i rysowania go linia na 2, rozciągając ją w odpowiedniej proporcji (do wykonania tej operacji potrzebujesz podstawowych matematyki)