void potoc_salleter::position() { t=QDateTime::currentDateTime().toTime_t(); // время в UTC M=n*(t-t0); //получение M(средняя аномалия) //нужен модуль(функция) для учета изменния //долготы восходящего угла E=Ek(M);//получение E-эксцентрическая аномалия (методом приближения) r=a*(1-(e*E));//радиус oe=a*(cos(E)-e); // вспомогательная орбитальная координата oe on=a*(sqrt(1-(e*e))*sin(E)); //вспомогательная орбитальная координата on x=(Px*oe)+(Qx*on); // x - в геоцентрической системе корординат y=(Py*oe)+(Qy*on);//y- в геоцентрической системе координат z=(Pz*oe)+(Qz*on); // z - в геоцентрической системе координат if (qdebag) { qDebug()<<x<<"x-в геоцентрической системе корординат"; qDebug()<<y<<"y-в геоцентрической системе координат"; qDebug()<<z<<"z-в геоцентрической системе координат"; } //вычесление скоростей v=atan(2*sqrt(1-e/1+e)*tan(E/2)); // истенная аномали p=a*(1-pow(e,2)); // параметр орбиыты V=sqrt((E_n)*((2/r)-(1/a))); // скорость vr=sqrt(E_n/p)*e*sin(v);//радиальная скорость vn=sqrt(E_n/p)*(1+e*cos(v));//трансверная скорость vx=x/r*vr+Qx*vn;// скорость по x vy=y/r*vr+Qy*vn;// скорость по y vz=z/r*vr+Qz*vn;// скорость по z if (pow(V,2)!=(vx*vx+vy*vy+vz*vz)) // проверка на правельность вычислений { emit speed_error(); } if (qdebag) { qDebug()<<vx<<"vx-скорость по x"; qDebug()<<vy<<"vy-скорость по y"; qDebug()<<vz<<"vz-скорость по z"; qDebug()<<V<<"v-скорость"; } salleter= vector.et(x,y,z,vx,vy,vz); // получение еденичного вектора emit data(salleter,t,name); // отправляет сигнал что данные обновились }
void Planet::energy(double EP,int i){ Ep(i) = EP; Ek(i) = (Vx(i)*Vx(i) + Vy(i)*Vy(i)) * 0.5 * mass; }