Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Java2D Applet ja sille 3D Cube Graphics2D.Line avulla ??

kpzpt [05.03.2010 13:42:46]

#

Hei!

Olen alkeissani 3D:n kanssa ja nyt tarvitsen tätä käytännön laskemista,
tämä alue on minulle tuntematonta,

Tarvitsen esimerkkejä 3D matikasta, lähinnä oma käyttönä olisi Java BufferedImage:n piirtäminen 3D maailmaan,
mutta en oikein tiedä mistä aloittaa tämä 3D kääntelyn opiskelu ??

Kuinka tulee rakentaa tämä kuuluisa 3D esimerkki pyörivistä palloista Javassa,
siis, tämä jossa on vaikka 6*6*6 riviä palloja jotka pyörivät 3D matikassa skaalautuen.

Tässä hyvänä vastaavana flash tutoriaali -> http://www.kirupa.com/developer/actionscript/rotation_center.htm
Flash tutoriaalin koodi on erillaista mitä Java koodi ja minulla siis ei kokemusta 3D matikasta.
Flash tutoriaalin 3D->2D kääntö funktion siirto Java käyttöön olisi siis haussa.

Transform3DPointsTo2DPoints = function(points, axisRotations){
	var TransformedPointsArray = [];
	var sx = Math.sin(axisRotations.x);
	var cx = Math.cos(axisRotations.x);
	var sy = Math.sin(axisRotations.y);
	var cy = Math.cos(axisRotations.y);
	var sz = Math.sin(axisRotations.z);
	var cz = Math.cos(axisRotations.z);
	var x,y,z, xy,xz, yx,yz, zx,zy, scaleFactor;

	var i = points.length;
	while (i--){
		x = points[i].x;
		y = points[i].y;
		z = points[i].z;

		// rotation around x
		xy = cx*y - sx*z;
		xz = sx*y + cx*z;
		// rotation around y
		yz = cy*xz - sy*x;
		yx = sy*xz + cy*x;
		// rotation around z
		zx = cz*yx - sz*xy;
		zy = sz*yx + cz*xy;

		scaleFactor = focalLength/(focalLength + yz);
		x = zx*scaleFactor;
		y = zy*scaleFactor;
		z = yz;

		TransformedPointsArray[i] = make2DPoint(x, y, -z, scaleFactor);
	}
	return TransformedPointsArray;
};

(
Lisäys1 tuo otsikko meni hieman vikaan, muutin tuon line cuben pallo cubeksi
kun nyt kuitenkin tarvitsen myös tuon skaalaus avun bufferedimageihini !!
Lisäys2 2D pyörittely minulta jo onnistuukin ihan hyvin !!
)

//----

Kiitos,,

Jokotai [05.03.2010 14:33:33]

#

Oikeastaan avaruuslävistäjä ja se että osaa tehdä viivoilla pyörivän neliön on kaikki mitä alkuun tarvitsee. Pallon kolmeulotteisuus on vain efekti.

kpzpt [05.03.2010 14:44:03]

#

Jokotai kirjoitti:

Oikeastaan avaruuslävistäjä ja se että osaa tehdä viivoilla pyörivän neliön on kaikki mitä alkuun tarvitsee. Pallon kolmeulotteisuus on vain efekti.

Cube!

Kyllä olet aivan oikeassa, kuinka tuo täysi 3D kääntely lasketaan pisteille.

//----

Kiitos,,

Jokotai [05.03.2010 14:56:20]

#

Jos osaat c/c++ niin putkan c/c++ Grafiikka-osiossa on kolme hyvää vinkkiä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta