Пример #1
0
        public static Matrix4F GetArbitraryCoordSystem(Vector3F zaxis)
        {
            Vector3F xaxis;

            if ((double)System.Math.Abs(zaxis.X) > (double)System.Math.Abs(zaxis.Y))
            {
                float num = 1f / (float)System.Math.Sqrt((double)zaxis.X * (double)zaxis.X + (double)zaxis.Z * (double)zaxis.Z);
                xaxis = new Vector3F(-zaxis.Z * num, 0.0f, zaxis.X * num);
            }
            else
            {
                float num = 1f / (float)System.Math.Sqrt((double)zaxis.Y * (double)zaxis.Y + (double)zaxis.Z * (double)zaxis.Z);
                xaxis = new Vector3F(0.0f, zaxis.Z * num, -zaxis.Y * num);
            }
            return(Transformation4F.smethod_0(xaxis, zaxis));
        }
Пример #2
0
        public static Matrix4F Scaling(Vector3F v, Point3F origin)
        {
            Vector3F v1 = (Vector3F)origin;

            return(Transformation4F.Translation(v1) * Transformation4F.Scaling(v) * Transformation4F.Translation(-v1));
        }
Пример #3
0
        public static Matrix4F Scaling(float s, Point3F origin)
        {
            Vector3F v = (Vector3F)origin;

            return(Transformation4F.Translation(v) * Transformation4F.Scaling(s) * Transformation4F.Translation(-v));
        }
Пример #4
0
        private static Matrix4F smethod_0(Vector3F xaxis, Vector3F zaxis)
        {
            Vector3F yaxis = Vector3F.CrossProduct(zaxis, xaxis);

            return(Transformation4F.GetCoordSystem(xaxis, yaxis, zaxis));
        }