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

Get the interpolated Transform at a specific time.
public GetTransform ( Box2DX.Common.Transform &xf, float alpha ) : void
xf Box2DX.Common.Transform
alpha float Alpha is a factor in [0,1], where 0 indicates t0.
Результат void
Пример #1
0
        public override void Step(Settings settings)
        {
            base.Step(settings);

            Sweep sweepA = new Sweep();
            sweepA.C0.Set(0.0f, -0.2f);
            sweepA.A0 = 0.0f;
            sweepA.C = sweepA.C0;
            sweepA.A = sweepA.A0;
            sweepA.T0 = 0.0f;
            sweepA.LocalCenter.SetZero();

            Sweep sweepB = new Sweep();
            sweepB.C0.Set(-0.076157160f, 0.16447277f);
            sweepB.A0 = -9.4497271f;
            sweepB.C.Set(-0.25650328f, -0.63657403f);
            sweepB.A = -9.0383911f;
            sweepB.T0 = 0.0f;
            sweepB.LocalCenter.SetZero();

            Collision.TOIInput input = new Collision.TOIInput();
            input.ProxyA.Set(_shapeA);
            input.ProxyB.Set(_shapeB);
            input.SweepA = sweepA;
            input.SweepB = sweepB;
            input.Tolerance = Box2DX.Common.Settings.LinearSlop;

            float toi = Collision.TimeOfImpact(input);

            OpenGLDebugDraw.DrawString(5, _textLine, string.Format("toi = {0}", toi));
            _textLine += 15;

            #warning "get variables from TOI implementation"
            int _maxToiIters = 0, _maxToiRootIters = 0;
            OpenGLDebugDraw.DrawString(5, _textLine, string.Format("max toi iters = {1}, max root iters = {1}", _maxToiIters, _maxToiRootIters));
            _textLine += 15;

            Vec2[] vertices = new Vec2[Box2DX.Common.Settings.MaxPolygonVertices];

            Transform transformA;
            sweepA.GetTransform(out transformA, 0.0f);
            for (int i = 0; i < _shapeA.VertexCount; ++i)
            {
                vertices[i] = Math.Mul(transformA, _shapeA.Vertices[i]);
            }
            _debugDraw.DrawPolygon(vertices, _shapeA.VertexCount, new Color(0.9f, 0.9f, 0.9f));

            Transform transformB;
            sweepB.GetTransform(out transformB, 0.0f);
            for (int i = 0; i < _shapeB.VertexCount; ++i)
            {
                vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
            }
            _debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.5f, 0.9f, 0.5f));

            sweepB.GetTransform(out transformB, toi);
            for (int i = 0; i < _shapeB.VertexCount; ++i)
            {
                vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
            }
            _debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.5f, 0.7f, 0.9f));

            sweepB.GetTransform(out transformB, 1.0f);
            for (int i = 0; i < _shapeB.VertexCount; ++i)
            {
                vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
            }
            _debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.9f, 0.5f, 0.5f));
        }