Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pair<Matrix, Matrix> IB(Matrix R, Matrix D, Matrix Rc, Matrix Dc, Vector X,
- Vector Y, Vector Xd, Vector Yd) {
- int n = X.size();
- //Convert Initial Data to Decimal Values
- Vector R_decimal = S2D(R,'r','r');
- Vector D_decimal = S2D(D,'d','r');
- Vector Rc_decimal = S2D(Rc,'r','r');
- Vector Dc_decimal = S2D(Dc,'d','r');
- //Perform Trig Calculations
- Vector s_RRc, c_RRc, t_D;
- double s_Dc = sin(Dc_decimal[0]);
- double c_Dc = cos(Dc_decimal[0]);
- double t_Dc = tan(Dc_decimal[0]);
- for (int i=0; i < n; i++ ){
- s_RRc[i] = sin(R_decimal[i]-Rc_decimal[0]);
- c_RRc[i] = cos(R_decimal[i]-Rc_decimal[0]);
- t_D[i] = tan(D_decimal[i]);
- }
- //Calculate Standard Coordinates
- Vector Xi;
- Vector Eta;
- for (int i=0; i<n; i++){
- Xi.push_back(-1 * (s_RRc[i] / (s_Dc*t_D[i] + c_Dc*c_RRc[i])));
- Eta.push_back(-1 * ((t_D[i] - t_Dc*c_RRc[i]) / (t_Dc*t_D[i] + c_RRc[i])));
- }
- //Method of Least Square to Determine the Plate Constants
- Vector ones(n,1);
- Vector zeros(n,0);
- Matrix A_Mat = {
- { X },
- { Y },
- { ones },
- { Xi },
- { zeros }
- };
- Matrix B_Mat = {
- { X },
- { Y },
- { ones },
- { Eta },
- { zeros }
- };
- Vector ab = LeastSquare(A_Mat);
- Vector de = LeastSquare(B_Mat);
- ab[0] -= 1;
- de[1] -= 1;
- int numDebris = Xd.size();
- Vector Xi_d(numDebris);
- Vector Eta_d(numDebris);
- for (int i=0;i<numDebris;i++){
- Xi_d[i] = (ab[0]+1)*Xd[i]+ab[1]*Yd[i]+ab[2];
- Eta_d[i] = de[0]*Xd[i]+(de[1]+1)*Yd[i]+de[2];
- }
- //Determine the Right Ascension and Declination of the Debris
- Vector t_RdRc, Rd1, t_Dd, Dd1;
- Matrix Rd, Dd;
- for(int i=0;i<numDebris;i++){
- t_RdRc.push_back(Xi_d[i]/(cos(Dc_decimal[i]) - Eta_d[i]*sin(Dc_decimal[i])));
- Rd1.push_back(atan(t_RdRc[i])+Rc_decimal[i]);
- t_Dd.push_back(((Eta_d[i]*cos(Dc_decimal[i])+sin(Dc_decimal[i]))*(sin(Rd1[i]-Rc_decimal[i])))/Xi_d[i]);
- Dd1.push_back(atan(t_Dd[i]));
- }
- Rd = D2S(Rd1, 'r','r');
- Dd =D2S(Dd1,'d','r');
- return make_pair(Rd,Dd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement