Przykładowy
program używa jedynie klas Graphics2D i Line2D do wyświetlania
grafiki. Widoczna na obrazku grafika rysowana jest w instancji klasy PanelRysunku dziedziczącej po klasie JPanel. Zatem problem polega na wizualizacji obiektu 3D na rysunek
2D.
Poniżej
przedstawiony jest kod odpowiedzialny za obliczenie współrzędnych
z układu 3D na układ 2D.
double x2D
= (x3D * wielkosc)
/ (z3D - 600) + srodekX2D;
double y2D
= (y3D * wielkosc)
/ (z3D - 600) + srodekY2D;
w
celu zdefiniowania dowolnej bryły w przestrzeni 3D najlepiej podawać
punkty tak aby punkt 0 (X=0, Y=0, Z=0) znajdował się w jej środku.
Zapewni to obrót bryły wokół jej osi.
Przykład
dla figury sześcian - punkty:
P1:
X=-20 Y=-20 Z=-20
P2:
X=20 Y=-20 Z=-20
P3:
X=20 Y=20 Z=-20
P4:
X=-20 Y=20 Z=-20
P5:
X=-20 Y=-20 Z=20
P6:
X=20 Y=-20 Z=20
P7:
X=20 Y=20 Z=20
P8:
X=-20 Y=20 Z=20
Środek
bryły jak i punkt obserwatora znajdują się w punkcie zerowym i
dlatego przeliczając punkty na układ 2D należy odjąć od
współrzędnej "Z" jakąś wartość, nie mniejszą niż odległość
krawędzi bryły do jej środka. Zmienne: "srodekX2D" i
"srodekY2D" przechowują wartości, które są
współrzędnymi środka panelu, odpowiadają za przesunięcie rysunku na
środek panelu. Zmienna "wielkosc" odpowiedzialna jest za skalowanie
rysunku 2D, im większa jej wartość tym większy jest rysunek.
Wartość zmiennej "wielkosc" może być zależna od
wielkości okna programu - zapewni to zmianę rozmiaru rysunku w zależności od
rozmiaru okna.
Wygraj w Lotto http://www.systemnatotka.pl/
|