Exemplo n.º 1
0
        public static bool ProjectAlongPlane(idVec3 t, idVec3 normal, float epsilon, float overBounce)
        {
            idVec3 cross = t.Cross(normal).Cross(t);

            // normalize so a fixed epsilon can be used
            cross.Normalize();
            float len = normal * cross;

            if (idMath.Fabs(len) < epsilon)
            {
                return(false);
            }
            cross.opMul(overBounce * (normal * t) / len);
            t.opSub(cross);
            return(true);
        }
Exemplo n.º 2
0
        public static void ProjectOntoPlane(ref idVec3 t, idVec3 normal, float overBounce)
        {
            float backoff = t * normal;

            if (overBounce != 1.0)
            {
                if (backoff < 0)
                {
                    backoff *= overBounce;
                }
                else
                {
                    backoff /= overBounce;
                }
            }
            t.opSub(normal * backoff);
        }
Exemplo n.º 3
0
 public static bool ProjectAlongPlane(idVec3 t, idVec3 normal, float epsilon, float overBounce)
 {
     idVec3 cross = t.Cross(normal).Cross(t);
     // normalize so a fixed epsilon can be used
     cross.Normalize();
     float len = normal * cross;
     if (idMath.Fabs(len) < epsilon)
         return false;
     cross.opMul(overBounce * (normal * t) / len);
     t.opSub(cross);
     return true;
 }
Exemplo n.º 4
0
 public static void ProjectOntoPlane(ref idVec3 t, idVec3 normal, float overBounce)
 {
     float backoff = t * normal;
     if (overBounce != 1.0)
     {
         if (backoff < 0)
             backoff *= overBounce;
         else
             backoff /= overBounce;
     }
     t.opSub(normal * backoff);
 }