void GroupT::CalcReaction()
{

double SumFx=0;
double SumFy=0;
double SumTorque=0;

for (list<Force *>::iterator f = s1->forces.begin(); f!=s1->forces.end(); f++)
    {
        Force  *x = *f;
        if(x->IsCalculatedx())
            SumFx+=x->GetForcex();
        if(x->IsCalculatedy())
            SumFy+=x->GetForcey();
        if(x->IsCalculatedt())
            SumTorque+=x->GetForcet();
    }

O->R1->SetForce(-SumFx,-SumFy,0);
O->R2->SetForce(SumFx,SumFy,0);

}
void GroupTTT::CalcReaction()
{

double SumTorque1=0;

for (list<Force *>::iterator f = s1->forces.begin(); f!=s1->forces.end(); f++)
    {
        Force  *Fi = *f;
        double T=0;
        double Fx=0;
        double Fy=0;
        if(Fi->IsCalculatedt())
            T=Fi->GetForcet();
        if(Fi->IsCalculatedx())
            Fx=Fi->GetForcex();
        if(Fi->IsCalculatedy())
            Fy=Fi->GetForcey();

        double leverx = -Fi->linear->x.GetTF0()+A->linear.x.GetTF0();
        double levery = -Fi->linear->y.GetTF0()+A->linear.y.GetTF0();

        SumTorque1+=T+Fx*leverx-Fy*levery;
    }

double SumTorque2=0;

/*
   dd:=(yb[i]-ya[i])*(xb[i]-xc[i])+(yb[i]-yc[i])*(xa[i]-xb[i]);
        dd1:=-k3*(xb[i]-xc[i])+k4*(xa[i]-xb[i]);
        dd2:=k4*(ya[i]-yb[i])+k3*(yb[i]-yc[i]);

*/

for (list<Force *>::iterator f = s2->forces.begin(); f!=s2->forces.end(); f++)
    {
        Force  *Fi = *f;
        double T=0;
        double Fx=0;
        double Fy=0;
        if(Fi->IsCalculatedt())
            T=Fi->GetForcet();
        if(Fi->IsCalculatedx())
            Fx=Fi->GetForcex();
        if(Fi->IsCalculatedy())
            Fy=Fi->GetForcey();
        double leverx = -Fi->linear->x.GetTF0()+C->linear.x.GetTF0();
        double levery = -Fi->linear->y.GetTF0()+C->linear.y.GetTF0();


            SumTorque2+=T+Fx*leverx-Fy*levery;
    }

/*
   dd:=(yb[i]-ya[i])*(xb[i]-xc[i])+(yb[i]-yc[i])*(xa[i]-xb[i]);
        dd1:=-k3*(xb[i]-xc[i])+k4*(xa[i]-xb[i]);
        dd2:=k4*(ya[i]-yb[i])+k3*(yb[i]-yc[i]);

*/

double leverxAB = A->linear.x.GetTF0()-B->linear.x.GetTF0();
double leveryAB = A->linear.y.GetTF0()-B->linear.y.GetTF0();

double leverxCB = C->linear.x.GetTF0()-B->linear.x.GetTF0();
double leveryCB = C->linear.y.GetTF0()-B->linear.y.GetTF0();

double d=leveryAB*leverxCB-leverxAB*leveryCB;
double d1=SumTorque1*leverxCB+SumTorque2*leverxAB;
double d2=SumTorque2*leveryAB+SumTorque1*leveryCB;

double R21x=d1/d;
double R21y=d2/d;

B->R1->SetForce(R21x,R21y,0);
B->R2->SetForce(-R21x,-R21y,0);

double SumFx1=0;
double SumFy1=0;

for (list<Force *>::iterator f = s1->forces.begin(); f!=s1->forces.end(); f++)
    {
        Force  *Fi = *f;
        if(Fi->IsCalculatedx())
            SumFx1+=Fi->GetForcex();
        if(Fi->IsCalculatedy())
            SumFy1+=Fi->GetForcey();
    }

double RAx=-SumFx1;
double RAy=-SumFy1;


A->R1->SetForce(RAx,RAy,0);
A->R2->SetForce(-RAx,-RAy,0);

double SumFx2=0;
double SumFy2=0;

for (list<Force *>::iterator f = s2->forces.begin(); f!=s2->forces.end(); f++)
    {
        Force  *x = *f;
        if(x->IsCalculatedx())
            SumFx2+=x->GetForcex();
        if(x->IsCalculatedy())
            SumFy2+=x->GetForcey();
    }

double RCx=-SumFx2;
double RCy=-SumFy2;

C->R2->SetForce(RCx,RCy,0);
C->R1->SetForce(-RCx,-RCy,0);

}