package nObjectProblem2;
public class Comet {
public int t;
public double q,e,w/*ω*/,o/*Ω*/,i;
public double p[]=new double[3];
public double v[]=new double[3];
public double dv[]=new double[3];
public double[] start(double now,double eps) {
double a=q/(1-e);
double b=a*Math.sqrt(1-e*e);
double k1=Math.sin(Math.toRadians(w))*Math.sin(Math.toRadians(o));
double k2=Math.sin(Math.toRadians(w))*Math.cos(Math.toRadians(o));
double k3=Math.sin(Math.toRadians(w))*Math.sin(Math.toRadians(i));
double k4=Math.cos(Math.toRadians(w))*Math.sin(Math.toRadians(o));
double k5=Math.cos(Math.toRadians(w))*Math.cos(Math.toRadians(o));
double k6=Math.cos(Math.toRadians(w))*Math.sin(Math.toRadians(i));
double k7=k5*Math.cos(Math.toRadians(i))-k1;
double k8=k2*Math.cos(Math.toRadians(i))+k4;
double px=k5-k1*Math.cos(Math.toRadians(i));
double py=k8*Math.cos(Math.toRadians(eps))-k3*Math.sin(Math.toRadians(eps));
double pz=k3*Math.cos(Math.toRadians(eps))+k8*Math.sin(Math.toRadians(eps));
double qx=-k2-k4*Math.cos(Math.toRadians(i));
double qy=k7*Math.cos(Math.toRadians(eps))-k6*Math.sin(Math.toRadians(eps));
double qz=k6*Math.cos(Math.toRadians(eps))+k7*Math.sin(Math.toRadians(eps));
double ax=a*px;
double ay=a*py;
double az=a*pz;
double bx=b*qx;
double by=b*qy;
double bz=b*qz;
double n=0.985607669/(Math.sqrt(Math.pow(a,3)));
double M=n*(now-t);
double E = 0,M1,d1;
int i = 0;
E=M/(1-e);
/*while(i<30){
i++;
M1=E-e*Math.sin(E);
d1=(M-M1)/(1-e*Math.cos(E));
E=E+d1;
}*/
double kpos[]=new double[3];
kpos[0]=ax*(Math.cos(Math.toRadians(E))-e)+bx*Math.sin(Math.toRadians(E));
kpos[1]=ay*(Math.cos(Math.toRadians(E))-e)+by*Math.sin(Math.toRadians(E));
kpos[2]=az*(Math.cos(Math.toRadians(E))-e)+bz*Math.sin(Math.toRadians(E));
return kpos;
}
}
最終更新:2009年01月10日 23:07