Comet

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。