j4nk3y: Drehmatrix Kreuzprodukt Vektor

Beitrag lesen

Salve zusammen,

Ich hab Heute an einem kleinen Versuch gearbeitet um einen Vektor um alle 3 Achsen zu drehen, sprich Kreuzprodukt mit den diversen Drehmatritzen. Dafür hab ich eine kleine Funktion geschrieben, welche mir aber ein komisches Ergebnis zurück gibt.

function vectorRotationXYZ($vector, $beta, $gamma, $delta)
{
	$rotation_XYZ = [
	"rotX" => [ "x" => ["x" => 1, 	"y" => 0, 	   "z" => 0 ] ,
		    "y" => ["x" => 0,   "y" => cos($beta), "z" => -sin($beta) ] , 
		    "z" => ["x" => 0, 	"y" => sin($beta), "z" => cos($beta) ]],
	"rotY" => [ "x" => ["x" => cos($gamma),	"y" => 0, "z" => sin($gamma) ] ,
		    "y" => ["x" => 0, 		"y" => 1, "z" => 0 ] , 
		    "z" => ["x" => -sin($gamma),"y" => 0, "z" => cos($gamma) ]],
	"rotZ" => [ "x" => ["x" => cos($delta), "y" => -sin($delta), 	"z" => 0 ] ,
		    "y" => ["x" => sin($delta), "y" => cos($delta), 	"z" => 0 ] , 
		    "z" => ["x" => 0, 		"y" => 0, 		"z" => 1 ]]
	];
	
	$result_vector = ["x" => 0, "y" => 0, "z" => 0];
	
	foreach($rotation_XYZ as $rotation_matrix)
	{
		foreach($rotation_matrix as $row_key => $matrix_row)
		{
			foreach($matrix_row as $multiplicator_key => $multiplicator)
			{
			     $result_vector[$row_key] += $multiplicator * $vector[$multiplicator_key];
			}
		}
	}
	
	return $result_vector;
}

$vector ist ein Array mit x,y,z und beta, gamma, delta, die Winkel der Neigungen der Achsen X, Y, Z. Problem ist nun folgendes, wenn ich einen Vektor habe und diesen durch die Funktion jage, dann wird dieser länger als der Ursprungsvektor und ich sehe nicht an welcher Stelle dies geschieht.

Sieht jemand vielleicht mehr als ich?

Danke und Gruß
Jo

akzeptierte Antworten