Seite 2 von 3

Verfasst: 27.01.2008 14:50
von Andreas_S
Ich denke x1,y1,z1 sin die ursprungs variablen und der underline ist deswegen weil er wohl eine eigene procedure für sin und cos hat:

Code: Alles auswählen

Procedure.d _sin(Angle.d)
 ProcedureReturn Sin((Angle*#PI)/180)
EndProcedure
Procedure.d _cos(Angle.d)
 ProcedureReturn Cos((Angle*#PI)/180)
EndProcedure
@Deeem2031
Ich verwend mal diese gleichungen... danke

Andreas

Verfasst: 27.01.2008 15:34
von Scarabol
Funktionierts?

Gruß
Scarabol

Verfasst: 27.01.2008 16:02
von Andreas_S
Jep

Verfasst: 27.01.2008 17:17
von Scarabol
Darf man mal fragen woran du gerade arbeitest?

Wenns ne kleine Grafikdemo ist, was benutzt du zum anzeigen und transformen der Sprites?

Gruß
Scarabol

Verfasst: 27.01.2008 21:19
von Andreas_S
Mich interessiert die Mathematik der 3 dimensionalität und ich schreibe gerade in java ein art renderer.

die "sprites" transormiere ich selbst und lines und so werden auch selbst berechnet.

Andreas

Verfasst: 27.01.2008 21:38
von Scarabol
Nice :allright:

Vielleicht sehn wir ja bald hier mal was unter Andere Sprachen....

Gruß
Scarabol

Verfasst: 27.01.2008 22:26
von Scarabol
Bei mir funktionierts irgendwie nicht.....

x = links/rechts
y = oben/unten
z = vorne/hinten

oder?

Gruß
Scarabol

Verfasst: 28.01.2008 13:14
von Andreas_S
nicht ganz...

x1 entspricht abstand von der x achse
y1 das gleiche y achse
z1 für z achse

also musste du einen rotations mittelpunkt angeben...

ich geb dir mal meinen java code:

Code: Alles auswählen

public static V3D calcRotation(V3D point,V3D rotatePoint,V3D rotateAngle) {
	V3D result = new V3D();
	
	V3D d = new V3D();
		d.x = point.x - rotatePoint.x;
		d.y = point.y - rotatePoint.y;
		d.z = point.z - rotatePoint.z;
	
	
	// X + Y + Z Rotation
		// Internet
			result.x = rotatePoint.x + cos(rotateAngle.y) * cos(rotateAngle.z) * d.x - cos(rotateAngle.y) * sin(rotateAngle.z) * d.y + sin(rotateAngle.y) * d.z;
			result.y = rotatePoint.y + (cos(rotateAngle.x) * sin(rotateAngle.z) + sin(rotateAngle.x) * sin(rotateAngle.y) * cos(rotateAngle.z)) * d.x + (cos(rotateAngle.x) * cos(rotateAngle.z) - sin(rotateAngle.x) * sin(rotateAngle.y) * sin(rotateAngle.z)) * d.y - sin(rotateAngle.x) * cos(rotateAngle.y) * d.z;
			result.z = rotatePoint.z + (sin(rotateAngle.x) * sin(rotateAngle.z) - cos(rotateAngle.x) * sin(rotateAngle.y) * cos(rotateAngle.z)) * d.x + (sin(rotateAngle.x) * cos(rotateAngle.z) + cos(rotateAngle.x) * sin(rotateAngle.y) * sin(rotateAngle.z)) * d.y + cos(rotateAngle.x) * cos(rotateAngle.y) * d.z;
	
	// X Rotation
		/*result.x = point.x;
		result.y = rotatePoint.y + (cos(rotateAngle.x) * d.y - sin(rotateAngle.x) * d.z);
		result.z = rotatePoint.z + (sin(rotateAngle.x) * d.y + cos(rotateAngle.x) * d.z);*/
	// Y Rotation
		/*result.x = rotatePoint.x + (cos(rotateAngle.y) * d.x - sin(rotateAngle.y) * d.z);
		result.y = point.y;
		result.z = rotatePoint.z + (sin(rotateAngle.y) * d.x + cos(rotateAngle.y) * d.z);*/
	// Z Rotation
		/*result.x = rotatePoint.x + (cos(rotateAngle.z) * d.x - sin(rotateAngle.z) * d.y);
		result.y = rotatePoint.y + (sin(rotateAngle.z) * d.x + cos(rotateAngle.z) * d.y);
		result.z = point.z;*/
	
	return result;
}
d.* entspricht dann dem "neuen null-punkt" abstand

viel spaß, Andreas

Verfasst: 28.01.2008 16:10
von Scarabol
Ok Danke,

dachte erst das der Punkt um den Ursprung des Koordinatensystems gedreht wird....

Gruß
Scarabol

Verfasst: 29.01.2008 15:43
von Andreas_S
Mein Mathematiklehrer hat mir gezeigt wie man das lösen kann :)

Ich stell vil. heite noch den Lösungsvorgang rauf...


Bis dann, Andreas