Exemplo n.º 1
0
        public static c_matrix rotate(e_axis axis, e_angle angle)
        {
            c_matrix result = identity();

            switch (axis)
            {
            case e_axis.x:
                result.values[1, 1] = cosine(angle);
                result.values[1, 2] = -sine(angle);
                result.values[2, 1] = sine(angle);
                result.values[2, 2] = cosine(angle);
                break;

            case e_axis.y:
                result.values[0, 0] = cosine(angle);
                result.values[0, 2] = sine(angle);
                result.values[2, 0] = -sine(angle);
                result.values[2, 2] = cosine(angle);
                break;

            case e_axis.z:
                result.values[0, 0] = cosine(angle);
                result.values[0, 1] = -sine(angle);
                result.values[1, 0] = sine(angle);
                result.values[1, 1] = cosine(angle);
                break;

            default: throw new Exception("invalid axis");
            }

            return(result);
        }
Exemplo n.º 2
0
        private static int sine(e_angle angle)
        {
            switch (angle)
            {
            case e_angle.angle_0: return(0);

            case e_angle.angle_90: return(1);

            case e_angle.angle_180: return(0);

            case e_angle.angle_270: return(-1);

            default: throw new Exception("invalid angle");
            }
        }