public void childIsTranslatedAndThenParentIsRotated() { var child = new Transform(); var parent = new Transform(); child.parent = parent; var translation = new Vector3(1, -1, 0); child.localTranslation = translation; parent.rotateLocal(flipUpsideDown); assertVectorEquals(Vector3.Transform(Vector3.Zero, child.worldMatrix), -translation); }
public void childRotatesAroundCenterWhenTurningUpsideDown() { var child = new Transform(); var parent = new Transform(); child.parent = parent; var center = new Vector3(1, -1, 0); child.localTranslation = -center; parent.localTranslation = center; parent.rotateLocal(flipUpsideDown); assertVectorEquals(Vector3.Transform(Vector3.Zero, child.worldMatrix), new Vector3(2, -2, 0)); }
public void rotationHappensBeforeTranslation() { var child = new Transform(); var center = new Vector3(1, -1, 0); child.localTranslation = center; child.rotateLocal(Quaternion.CreateFromRotationMatrix(flipUpsideDown)); var transformed = Vector3.Transform(center, child.worldMatrix); assertVectorEquals(transformed, Vector3.Zero); }
public void childRotatesWhenParentIsRotated() { var child = new Transform(); var parent = new Transform(); child.parent = parent; var rotationMatrix = Matrix.CreateRotationZ(1); parent.rotateLocal(rotationMatrix); assertMatrixEquals(child.worldMatrix, rotationMatrix); }