Box2D.Collision.SeparationFunction.Evaluate C# (CSharp) Метод

Evaluate() публичный Метод

public Evaluate ( int indexA, int indexB, float t ) : float
indexA int
indexB int
t float
Результат float
        public float Evaluate(int indexA, int indexB, float t)
        {
            SweepA.GetTransform(xfa, t);
            SweepB.GetTransform(xfb, t);

            switch (Type)
            {

                case Type.Points:
                    {
                        Rot.MulTransUnsafe(xfa.Q, Axis, axisA);
                        Rot.MulTransUnsafe(xfb.Q, Axis.NegateLocal(), axisB);
                        Axis.NegateLocal();

                        localPointA.Set(ProxyA.GetVertex(indexA));
                        localPointB.Set(ProxyB.GetVertex(indexB));

                        Transform.MulToOutUnsafe(xfa, localPointA, pointA);
                        Transform.MulToOutUnsafe(xfb, localPointB, pointB);

                        float separation = Vec2.Dot(pointB.SubLocal(pointA), Axis);
                        return separation;
                    }

                case Type.FaceA:
                    {
                        // System.out.printf("We're faceA\n");
                        Rot.MulToOutUnsafe(xfa.Q, Axis, normal);
                        Transform.MulToOutUnsafe(xfa, LocalPoint, pointA);

                        Rot.MulTransUnsafe(xfb.Q, normal.NegateLocal(), axisB);
                        normal.NegateLocal();

                        localPointB.Set(ProxyB.GetVertex(indexB));
                        Transform.MulToOutUnsafe(xfb, localPointB, pointB);
                        float separation = Vec2.Dot(pointB.SubLocal(pointA), normal);
                        return separation;
                    }

                case Type.FaceB:
                    {
                        // System.out.printf("We're faceB\n");
                        Rot.MulToOutUnsafe(xfb.Q, Axis, normal);
                        Transform.MulToOutUnsafe(xfb, LocalPoint, pointB);

                        Rot.MulTransUnsafe(xfa.Q, normal.NegateLocal(), axisA);
                        normal.NegateLocal();

                        localPointA.Set(ProxyA.GetVertex(indexA));
                        Transform.MulToOutUnsafe(xfa, localPointA, pointA);

                        float separation = Vec2.Dot(pointA.SubLocal(pointB), normal);
                        return separation;
                    }

                default:
                    Debug.Assert(false);
                    return 0f;

            }
        }