Exemplo n.º 1
0
 public ChContactSMC(ChContactContainer mcontainer,  //< contact container
                     Ta mobjA,                       //< collidable object A
                     Tb mobjB,                       //< collidable object B
                     collision.ChCollisionInfo cinfo //< data for the contact pair
                     )
     : base(mcontainer, mobjA, mobjB, cinfo)
 {
     // m_Jac = null;
     Reset(mobjA, mobjB, cinfo);
 }
Exemplo n.º 2
0
        public ChContactNSC(ChContactContainer mcontainer,  //< contact container
                            Ta mobjA,                       //< collidable object A
                            Tb mobjB,                       //< collidable object B
                            collision.ChCollisionInfo cinfo //< data for the contact pair
                            )
            : base(mcontainer, mobjA, mobjB, cinfo)
        {
            Nx.SetTangentialConstraintU(Tu);
            Nx.SetTangentialConstraintV(Tv);

            Reset(mobjA, mobjB, cinfo);
        }
Exemplo n.º 3
0
        public ChContactNSCrolling(ChContactContainer mcontainer,  //< contact container
                                   Ta mobjA,                       //< collidable object A
                                   Tb mobjB,                       //< collidable object B
                                   collision.ChCollisionInfo cinfo //< data for the contact pair
                                   )
            : base(mcontainer, mobjA, mobjB, cinfo)
        {
            Rx.SetRollingConstraintU(this.Ru);
            Rx.SetRollingConstraintV(this.Rv);
            Rx.SetNormalConstraint(this.Nx);

            Reset(mobjA, mobjB, cinfo);
        }
Exemplo n.º 4
0
        public ChContactTuple(ChContactContainer mcontainer,  //< contact container
                              Ta mobjA,                       //< ChContactable object A
                              Tb mobjB,                       //< ChContactable object B
                              collision.ChCollisionInfo cinfo //< data for the contact pair
                              )
        {
            //  Debug.Assert(mcontainer != null);
            // Debug.Assert(mobjA);
            // Debug.Assert(mobjB);

            container = mcontainer;

            Reset(mobjA, mobjB, cinfo);
        }
Exemplo n.º 5
0
        public void _OptimalContactInsert <Ta, Tb, Tcont, Titer>(ref List <Tcont> contactlist,        //< contact list
                                                                 ref IEnumerator <Titer> lastcontact, //< last contact acquired
                                                                                                      // ref Titer lastcontact,                      //< last contact acquired
                                                                                                      // ref IEnumerator<ChContactNSC<ChContactable_1vars<IntInterface.Six>, ChContactable_1vars<IntInterface.Six>>> lastcontact,
                                                                 ref int n_added,                     //< number of contact inserted
                                                                 ChContactContainer mcontainer,       //< contact container
                                                                 Ta objA,                             //< collidable object A
                                                                 Tb objB,                             //< collidable object B
                                                                 collision.ChCollisionInfo cinfo      //< collision informations
                                                                 )
        // where Titer: object
        //
            where Tcont : ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> >
            where Titer : ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> >
            where Ta : ChContactable_1vars <IntInterface.Six>
            where Tb : ChContactable_1vars <IntInterface.Six>
        {
            if (/*lastcontact != null && */ lastcontact.Current != contactlist.LastOrDefault())
            {
                // reuse old contacts
                lastcontact.MoveNext();
                ((IEnumerator <ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > >)lastcontact).Current.Reset(objA, objB, cinfo);
            }
            else
            {
                ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> > mc = new ChContactSMC <ChContactable_1vars <IntInterface.Six>, ChContactable_1vars <IntInterface.Six> >(mcontainer, objA, objB, cinfo);
                Tcont coont = (Tcont)mc;

                contactlist.Add(coont);

                // move to last element in list
                IEnumerator <Tcont> iter = contactlist.GetEnumerator();
                for (int i = 0; i < contactlist.Count; i++)
                {
                    iter.MoveNext();
                }
                lastcontact = (IEnumerator <Titer>)iter;

                // lastcontact = (dynamic)contactlist.GetEnumerator();
            }
            n_added++;
        }
Exemplo n.º 6
0
 public ChContactContainer(ChContactContainer other)
 {
     add_contact_callback    = other.add_contact_callback;
     report_contact_callback = other.report_contact_callback;
 }