Esempio n. 1
0
        /// <summary>
        /// Apply the inverse local rotate/translate/scale at transform to ray
        /// </summary>
        public static Ray3f ApplyInverseTransform(ITransformed transform, Ray3f ray)
        {
            Vector3f origin = ApplyInverseTransformP(transform, ray.Origin);
            Vector3f dir    = ApplyInverseTransformV(transform, ray.Direction);

            return(new Ray3f(origin, dir.Normalized));
        }
Esempio n. 2
0
        /// <summary>
        /// Apply the inverse local rotate/translate/scale at transform to frameIn
        /// </summary>
        public static Frame3f ApplyInverseTransform(ITransformed transform, Frame3f frameIn)
        {
            Frame3f result = transform.GetLocalFrame(CoordSpace.ObjectCoords).ToFrame(frameIn);

            result.Scale(1.0f / transform.GetLocalScale());
            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Apply the inverse local rotate/translate/scale at transform to vector
        /// </summary>
        public static Vector3f ApplyInverseTransformV(ITransformed transform, Vector3f v)
        {
            Vector3f vInv  = transform.GetLocalFrame(CoordSpace.ObjectCoords).ToFrameV(ref v);
            Vector3f scale = transform.GetLocalScale();

            return(vInv / scale);
        }
Esempio n. 4
0
        /// <summary>
        /// Apply the inverse local rotate/translate/scale at transform to frameIn
        /// </summary>
        public static Frame3f ApplyInverseTransform(ITransformed transform, Frame3f frameIn)
        {
            Frame3f  result = transform.GetLocalFrame(CoordSpace.ObjectCoords).ToFrame(ref frameIn);
            Vector3f scale  = transform.GetLocalScale();

            Util.gDevAssert(IsUniformScale(scale));
            result.Scale(1.0f / scale);
            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Apply the local rotate/translate/scale at transform to frameIn
        /// </summary>
        public static Frame3f ApplyTransform(ITransformed transform, Frame3f frameIn)
        {
            Frame3f result = frameIn.Scaled(transform.GetLocalScale());

            return(transform.GetLocalFrame(CoordSpace.ObjectCoords).FromFrame(result));
        }
Esempio n. 6
0
        /// <summary>
        /// Apply the local rotate/translate/scale at transform to vector
        /// </summary>
        public static Vector3f ApplyTransformV(ITransformed transform, Vector3f vIn)
        {
            Vector3f v = vIn * transform.GetLocalScale();

            return(transform.GetLocalFrame(CoordSpace.ObjectCoords).FromFrameV(ref v));
        }
Esempio n. 7
0
        /// <summary>
        /// Apply the local rotate/translate/scale at transform to point
        /// </summary>
        public static Vector3f ApplyTransformP(ITransformed transform, Vector3f pIn)
        {
            Vector3f p = pIn * transform.GetLocalScale();

            return(transform.GetLocalFrame(CoordSpace.ObjectCoords).FromFrameP(ref p));
        }