function Contact(){

    // The first shape.
    this.shape1 = null;
    // The second shape.
    this.shape2 = null;
    // The first rigid body.
    this.body1 = null;
    // The second rigid body.
    this.body2 = null;
    // Internal
    this.persisting = false;
    // Whether both the rigid bodies are sleeping or not.
    this.sleeping = false;
    // The collision detector between two shapes.
    this.detector = null;
    // The contact constraint of the contact.
    this.constraint = null;
    // Whether the shapes are touching or not.
    this.touching = false;
    // shapes is very close and touching 
    this.close = false;

    this.dist = _Math.INF;

    this.b1Link = new ContactLink( this );
    this.b2Link = new ContactLink( this );
    this.s1Link = new ContactLink( this );
    this.s2Link = new ContactLink( this );

    // The contact manifold of the contact.
    this.manifold = new ContactManifold();

    this.buffer = [

        new ImpulseDataBuffer(),
        new ImpulseDataBuffer(),
        new ImpulseDataBuffer(),
        new ImpulseDataBuffer()

    ];

    this.points = this.manifold.points;
    this.constraint = new ContactConstraint( this.manifold );

}
A contact is a pair of shapes whose axis-aligned bounding boxes are overlapping.

@author saharan
@author lo-th