Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        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);
        }