File WEP434.PS

Directory of image this file is from
This file as a plain text file

PROGRAM PARABOLBAHN (IN,OUT);
CONST
  PI=3.14159266535;K=0.01720209895;BOG=0.01745329252;

TYPE
  DREIREL=ARRAY [1..3] OF REAL;

VAR
  R,A,B,C,X,Y,Z,JD:DREIREL;
  A12,B12,C12,A23,B23,C23,G,F1,L1,M,H1,H2,H3,H,F3,L3,F,L,ETA,THETA,
  S,RHO,R1,R3,R13,RN13,X1,Y1,Z1,X3,Y3,Z3,HST,HST1,X0,Y0,Z0,R0,V31,
  EKL,S1,V1,V3,Q,T,SV,CV,PX,PY,PZ,QX,QY,QZ,H31,H12,H23,IB,KNL,OM,D,
  RA,DEC:REAL;
  I,J1:INTEGER;

FUNCTION ARCSIN (X:REAL):REAL;
BEGIN
  ARCSIN:=ARCTAN (X/SQRT (-X*X+1));
END;

FUNCTION ARCCOS (X:REAL):REAL;
BEGIN
  ARCCOS:=-ARCSIN (X)+PI/2;
END;

FUNCTION TAN (X:REAL):REAL;
BEGIN
  TAN:=SIN(X)/COS(X);
END;

PROCEDUR XYZ (VAR D,M:REAL;J:INTEGER);
VAR
  S,N,YS,EN,D1,T,OM,EX,EL,MA,E,R,V:REAL;
BEGIN
  YS:=J+1900;N:=M+1;IF N<=3 THEN BEGIN YS:=J+1899;N:=N+12 END;
  JD[I]:=TRUNC (365.25*YS)+TRUNC (30.6001*N)+D+1720981.5;
  D1:=TRUNC((J-1)/4)+TRUNC(30.6*M+0.53/SQR (M-1.55)-32.3)+D-0.5;
  IF (J MOD 4=0) AND (M>=3) THEN D1:=D1+1;
  T:=(365*J+D1)/36525;OM:=BOG*(281.220833+1.719175*T+3.61E-4*T*T);
  EX:=0.01675104-4.18E-5*T;EKL:=BOG*(23.452294-0.0130125*T);
  MA:=BOG*(-1.524155-1.5E-4*T*T-0.25590255*J+0.98560027*D1);
  E:=MA;
  REPEAT EN:=E;E:=MA+EX*SIN (EN) UNTIL ABS (EN-E)<1E-7;
  R:=1-EX*COS (E);V:=2*ARCTAN (SQRT ((1+EX)/(1-EX))*TAN (E));
  EL:=V+OM;
  X[I]:=R*COS (EL);Y[I]:=R*SIN (EL)*COS (EKL);Z[I]:=R*SIN (EL)*SIN (EKL);
END;

PROCEDUR LOESUNG (VAR F:REAL);
VAR
  H,AQ1,AQ2,AQ3,P,Q,D:REAL;
BEGIN
  H:=-(A[2]*X[2]+B[2]*Y[2]+C[2]*Z[2]);
  AQ1:=1/3/R[2]*(4*F+5*H);AQ2:=2/3+1/SQR (R[2])*(2*F*H+SQR (G)/3/SQR (H));
  AQ3:=1/3/SQR (R[2])*(2*F+SQR (G/H/R[2])*H);
  P:=-1/3*SQR (AQ1)+AQ2;Q:=2/27*AQ1*AQ1*AQ1-1/3*AQ1*AQ2+AQ3;
  D:=SQR (P/3)*P/3+SQR (Q/2);
  IF D>0 THEN WRITELN("ES GIBT NUR EINE LOESUNG(MIT NACHRECHNUNG)!")
    ELSE BEGIN WRITELN("ES GIBT 3 LOESUNGEN!");HALT;END;
END;

(*---------- Hauptprogramm ----------*)
BEGIN
  FOR I:=1 TO 3 DO BEGIN
    WRITE("DATUM",I:2);READLN;READ(D,M,J1);
  XYZ(D,M,J1);
  R[I]:=SQRT (SQR (X[I])+SQR (Y[I])+SQR (Z[I]));
  WRITE("DEC,RA",I:2);READLN;READ(DEC,RA);DEC:=BOG*DEC;RA:=BOG*15*RA;
  A[I]:=COS (DEC)*COS(RA);B[I]:=COS (DEC)*SIN (RA);C[I]:=SIN (DEC);
                   END;
  A12:=B[1]*C[2]-B[2]*C[1];B12:=C[1]*A[2]-C[2]*A[1];
  C12:=A[1]*B[2]-A[2]*B[1];A23:=B[2]*C[3]-B[3]*C[2];
  B23:=C[2]*A[3]-C[3]*A[2];C23:=A[2]*B[3]-A[3]*B[2];
  G:=SQRT (SQR (X[3]-X[1])+SQR (Y[3]-Y[1])+SQR (Z[3]-Z[1]));
  F1:=-(A[1]*X[1]+B[1]*Y[1]+C[1]*Z[1]);L1:=SQRT (SQR  (R[1])-SQR (F1));
  M:=(JD[3]-JD[2])/(JD[2]-JD[1]);
  M:=M*(A12*X[2]+B12*Y[2]+C12*Z[2])/(A23*X[2]+B23*Y[2]+C23*Z[2]);
  H1:=M*A[3]-A[1];H2:=M*B[3]-B[1];H3:=M*C[3]-C[1];
  H:=SQRT (SQR (H1)+SQR (H2)+SQR (H3));
  F3:=-(A[3]*X[3]+B[3]*Y[3]+C[3]*Z[3])/M;
  L3:=SQRT (SQR (R[3]/M)-SQR (F3));
  F:=(H1*(X[1]-X[3])+H2*(Y[1]-Y[3])+H3*(Z[1]-Z[3]))/SQR (H);
  L:=SQRT (SQR (G/H)-SQR (F));
  IF F<=0 THEN LOESUNG(F) ELSE WRITELN("ES GIBT NUR EINE LOESUNG!");
  RN13:=2;

  (*========== Iteration R13 ==========*)
  REPEAT R13:=RN13;
         ETA:=2*K*(JD[3]-JD[1])/EXP (R13*LN(1.5));
         THETA:=ARCSIN (ETA*1.060660172);
         S:=R13*2*SQRT (2)*SIN (THETA/3)*SQRT (COS (2/3*THETA));
         RHO:=SQRT (SQR (S/H)-SQR (L))-F;
         R1:=SQRT (SQR (RHO+F1)+SQR (L1));
         R3:=M*SQRT (SQR (RHO+F3)+SQR (L3));
         RN13:=R1+R3;
  UNTIL  ABS (RN13-R13)<1E-8;

  (*========== Ableitung der Bahnelemente ==========*)
  X[1]:=RHO*A[1]-X[1];Y[1]:=RHO*B[1]-Y[1];Z[1]:=RHO*C[1]-Z[1];
  RHO:=M*RHO;
  X[3]:=RHO*A[3]-X[3];Y[3]:=RHO*B[3]-Y[3];Z[3]:=RHO*C[3]-Z[3];
  HST:=X[1]*X[3]+Y[1]*Y[3]+Z[1]*Z[3];
  HST1:=HST/SQR (R1);
  X0:=X[3]-HST1*X[1];
  Y0:=Y[3]-HST1*Y[1];
  Z0:=Z[3]-HST1*Z[1];
  R0:=SQRT (SQR (X0)+SQR (Y0)+SQR (Z0));
  V31:=ARCTAN (R0*R1/HST);
  H1:=1/SQRT (R1);
  H2:=H1*COS (V31/2);
  H3:=1/SQRT (R3);
  S1:=(H2-H3)/SIN (V31/2);
  V1:=2*ARCTAN (S1/H1);
  V3:=V1+V31;
  Q:=R1*SQR (COS (V1/2));
  T:=JD[1]-SQRT (2)/K*EXP (Q*LN(3/2))*TAN (V1/2)*(1+1/3*SQRT (TAN (V1/2)));
  CV:=COS (V1);SV:=SIN (V1);

  (*========== Gauss'sche Konstanten ==========*)
  PX:=X[1]/R1*CV-X0/R0*SV;
  PY:=Y[1]/R1*CV-Y0/R0*SV;
  PZ:=Z[1]/R1*CV-Z0/R0*SV;
  QX:=X[1]/R1*SV+X0/R0*CV;
  QY:=Y[1]/R1*SV+Y0/R0*CV;
  QZ:=Z[1]/R1*SV+Z0/R0*CV;
    WRITELN("*=========================================*");
    WRITELN("DIE GAUSS'SCHEN KONSTANTEN DES OBJEKTS:");
    WRITELN("PX =",PX:16:6);
    WRITELN("PY =",PY:16:6);
    WRITELN("PZ =",PZ:16:6);
    WRITELN("QX =",QX:16:6);
    WRITELN("QY =",QY:16:6);
    WRITELN("QZ =",QZ:16:6);
  H31:=PZ*QX-PX*QZ;
  H12:=PX*QY-PY*QX;
  H23:=PY*QZ-PZ*QY;
  IB:=ARCCOS (H12*COS (EKL)-H31*SIN (EKL));
  KNL:=ARCSIN (H23/SIN (IB));
  OM:=ARCSIN (-(QX*COS (KNL)+QY*SIN (KNL)*COS (EKL)+QZ*SIN (KNL)*SIN (EKL)));

  (*========== Ausgabe ==========*)
  WRITELN("*=========================================*");
  WRITELN("DIE BAHNELEMENTE:");
    WRITELN("  T  =",T:20:5," (JD)");
    WRITELN("  Q  =",Q:20:5);
    WRITELN("  I  =",IB/BOG:20:5);
    WRITELN("  KNL=",KNL/BOG:20:5);
    WRITELN("  OMG=",OM/BOG:20:5);
  WRITELN("*==========================================*");
END.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search