Orbital Mechanics

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một vệ tinh chuyển động quanh một hành tinh hình cầu đứng yên. Hành tinh có bán kính \(R\) và tham số hấp dẫn \(\mu\).

Tại thời điểm \(t=0\), vệ tinh có:

  • Khoảng cách đến tâm: \(r\)
  • Độ lớn vận tốc: \(v\)
  • Góc giữa vectơ vận tốc và vectơ vị trí: \(\alpha\)

Đặt:

\[ v_r=v\cos\alpha \]
\[ E=\frac{v^2}{2}-\frac{\mu}{r} \]
\[ L=rv\sin\alpha \]

Trong đó \(v_r\) cho biết vệ tinh đang tiến lại gần hay đi xa tâm:

  • \(v_r<0\): đang tiến vào.
  • \(v_r>0\): đang đi ra.
  • \(v_r=0\): đang ở điểm gần nhất hoặc xa nhất.

Kết quả cần tìm

Với mỗi vệ tinh, in một trong ba dạng:

  • \(COLLISION\ t\): vệ tinh chạm hành tinh sau thời gian \(t\).
  • \(ORBIT\ r_a\ t\): vệ tinh tiếp tục quay quanh hành tinh an toàn. \(r_a\) là khoảng cách lớn nhất và \(t\) là thời gian tới lần tiếp theo đạt khoảng cách đó.
  • \(ESCAPE\ r_{min}\ t\): vệ tinh thoát khỏi hành tinh. \(r_{min}\) là khoảng cách nhỏ nhất đạt được kể từ \(t=0\), còn \(t\) là thời điểm đạt khoảng cách đó.

Các trường hợp

a) \(L>0\)

Tính độ lệch tâm:

\[ e=\sqrt{1+\frac{2EL^2}{\mu^2}} \]

Nếu \(E<0\), quỹ đạo là elip.

\[ a=-\frac{\mu}{2E} \]
\[ r_p=\frac{L^2}{\mu(1+e)} \]
\[ r_a=a(1+e) \]
  • Nếu \(r_p\le R\)\(COLLISION\).
  • Nếu \(r_p>R\)\(ORBIT\).

Nếu \(E=0\), quỹ đạo là parabol.

\[ r_p=\frac{L^2}{2\mu} \]
  • Nếu \(v_r\ge0\)\(ESCAPE\ r\ 0\).
  • Nếu \(v_r<0\):
    • \(r_p\le R\)\(COLLISION\).
    • \(r_p>R\)\(ESCAPE\ r_p\ t\).

Nếu \(E>0\), quỹ đạo là hyperbol.

\[ a_h=\frac{\mu}{2E} \]
\[ r_p=a_h(e-1) \]
  • Nếu \(v_r\ge0\)\(ESCAPE\ r\ 0\).
  • Nếu \(v_r<0\):
    • \(r_p\le R\)\(COLLISION\).
    • \(r_p>R\)\(ESCAPE\ r_p\ t\).

b) \(L=0\)

Vệ tinh chuyển động thẳng theo hướng tâm.

  • Nếu \(v_r<0\)\(COLLISION\).
  • Nếu \(v_r>0\)\(E\ge0\)\(ESCAPE\ r\ 0\).
  • Nếu \(v_r>0\)\(E<0\) → vệ tinh đi tới điểm xa nhất rồi quay lại và \(COLLISION\).

Tính thời gian

Các công thức dưới đây dùng để tính thời gian. Có thể sử dụng các phương pháp số để tính các hàm ngược với độ chính xác yêu cầu.

1. Quỹ đạo elip

Với \(e>0\), đặt:

\[ \cos\mathcal{E}=\frac{1-r/a}{e} \]
\[ \sin\mathcal{E}=\frac{rv_r}{e\sqrt{\mu a}} \]

Chọn \(\mathcal{E}\) trong khoảng \([0,2\pi)\).

Thời gian tính từ cận điểm là:

\[ t_p= \sqrt{\frac{a^3}{\mu}} \left(\mathcal{E}-e\sin\mathcal{E}\right) \]

Chu kỳ quỹ đạo là:

\[ T=2\pi\sqrt{\frac{a^3}{\mu}} \]

Viễn điểm tương ứng với:

\[ \mathcal{E}=\pi \]

Nếu vệ tinh đang ở viễn điểm, thời gian tới lần tiếp theo đạt viễn điểm được quy ước là \(T\).

Nếu \(e=0\), quỹ đạo là đường tròn. Khi đó vệ tinh luôn ở khoảng cách \(r=r_a=r_p\), và thời gian tới lần tiếp theo đạt khoảng cách này cũng được quy ước là \(T\).

Nếu \(r_p\le R\), đặt:

\[ \cos\mathcal{E}_R=\frac{1-R/a}{e} \]

Hai điểm trên quỹ đạo có khoảng cách \(R\) tương ứng với:

\[ \mathcal{E}_R \]

và:

\[ 2\pi-\mathcal{E}_R \]

Chọn điểm xuất hiện đầu tiên sau thời điểm \(t=0\) để tính thời gian va chạm.

2. Quỹ đạo parabol

Đặt:

\[ p=\frac{L^2}{\mu} \]
\[ D=\frac{rv_r}{\sqrt{\mu p}} \]

Thời gian tính từ cận điểm là:

\[ t_p= \frac{1}{2}\sqrt{\frac{p^3}{\mu}} \left(D+\frac{D^3}{3}\right) \]

Nếu \(v_r<0\)\(r_p>R\), thời gian tới cận điểm là:

\[ t=-t_p \]

Nếu \(r_p\le R\), đặt:

\[ D_R=-\sqrt{\frac{2R}{p}-1} \]

Thời gian va chạm được tính bằng hiệu giữa thời gian tại \(D_R\) và thời gian tại vị trí ban đầu.

3. Quỹ đạo hyperbol

Đặt:

\[ H= \operatorname{arsinh} \left( \frac{rv_r}{e\sqrt{\mu a_h}} \right) \]

Thời gian tính từ cận điểm là:

\[ t_p= \sqrt{\frac{a_h^3}{\mu}} \left(e\sinh H-H\right) \]

Nếu \(v_r<0\)\(r_p>R\), thời gian tới cận điểm là:

\[ t=-t_p \]

Nếu \(r_p\le R\), đặt:

\[ \cosh H_R= \frac{R/a_h+1}{e} \]

và chọn \(H_R<0\) vì vệ tinh đang tiến vào.

Thời gian va chạm được tính bằng hiệu giữa thời gian tại \(H_R\) và thời gian tại vị trí ban đầu.

4. Chuyển động thẳng với \(L=0\)

Nếu \(E>0\), đặt:

\[ a_h=\frac{\mu}{2E} \]
\[ r=a_h(\cosh H-1) \]
\[ t_p= \sqrt{\frac{a_h^3}{\mu}} (\sinh H-H) \]

Khi vệ tinh đang đi vào, \(H<0\).

Nếu \(E=0\), thời gian đi từ khoảng cách \(r_1\) đến \(r_2\) theo hướng vào tâm là:

\[ t= \sqrt{\frac{2}{9\mu}} \left(r_1^{3/2}-r_2^{3/2}\right) \]

Nếu \(E<0\), đặt:

\[ a=-\frac{\mu}{2E} \]

và:

\[ r=a(1-\cos\eta) \]
\[ t_p= \sqrt{\frac{a^3}{\mu}} (\eta-\sin\eta) \]

Khi vệ tinh đang đi ra, chọn \(\eta\in(0,\pi)\).

Khi vệ tinh quay lại, chọn \(\eta\in(\pi,2\pi)\).

Thời gian từ vị trí ban đầu đến vị trí cần tìm được tính bằng hiệu giữa hai thời điểm tương ứng.

Input

Dòng đầu chứa ba số \(\mu\), \(R\), \(N\).

\(N\) dòng tiếp theo, mỗi dòng chứa \(r\), \(v\), \(\alpha\).

Giới hạn:

  • \(1\le N\le2\cdot10^5\)
  • \(10^{-12}\le\mu\le10^{24}\)
  • \(0<R\le10^{15}\)
  • \(R<r\le10^{15}\)
  • \(0<v\le10^{12}\)
  • \(0^\circ\le\alpha\le180^\circ\)

Các số thực có không quá \(15\) chữ số sau dấu phẩy.

Output

Với mỗi vệ tinh, in đúng một dòng:

  • \(COLLISION\ t\)
  • \(ORBIT\ r_a\ t\)
  • \(ESCAPE\ r_{min}\ t\)

Sai số tuyệt đối hoặc tương đối của mỗi số thực không quá \(10^{-9}\).

Example

Test 1

Input
100 5 4
10 3 90
10 10 90
10 6 120
10 6 60
Output
ORBIT 10.00000000000000 17.22228772908151
ESCAPE 10.00000000000000 0
ESCAPE 8.16570324333849 1.09489935147568
ESCAPE 10.00000000000000 0
Note

Vệ tinh 1: \(E=-5.5<0\) nên quỹ đạo là elip. Ta có:

\[ e=0.1 \]
\[ a=\frac{100}{11} \]
\[ r_p\approx8.18181818181818 \]
\[ r_a=10 \]

\(r_p>R\) nên vệ tinh không va chạm. Ban đầu \(r=r_a\)\(v_r=0\), nên vệ tinh đang ở viễn điểm. Vì vậy lần tiếp theo đạt viễn điểm xảy ra sau đúng một chu kỳ:

\[ T=2\pi\sqrt{\frac{a^3}{\mu}} \approx17.22228772908151 \]

Vệ tinh 2: \(E=40>0\) nên quỹ đạo là hyperbol. Vì \(\alpha=90^\circ\) nên \(v_r=0\), vệ tinh đang ở cận điểm. Khoảng cách nhỏ nhất là \(r=10>R\), do đó kết quả là \(ESCAPE\ 10.00000000000000\ 0\).

Vệ tinh 3: \(E=8>0\) nên quỹ đạo là hyperbol. Vì \(\alpha=120^\circ\) nên \(v_r=-3<0\), vệ tinh đang tiến tới cận điểm. Ta có:

\[ r_p\approx8.16570324333849>R \]

nên vệ tinh đi qua cận điểm an toàn rồi tiếp tục thoát khỏi hành tinh. Thời gian tới cận điểm là:

\[ t\approx1.09489935147568 \]

Vệ tinh 4: \(E=8>0\) nên quỹ đạo là hyperbol. Vì \(\alpha=60^\circ\) nên \(v_r=3>0\), vệ tinh đang chuyển động ra xa và đã đi qua cận điểm. Do đó khoảng cách nhỏ nhất kể từ \(t=0\)\(r=10\), đạt được tại \(t=0\).

Scoring

  • Subtask 1 (30 points): \(1\le N\le100\).
  • Subtask 2 (70 points): \(1\le N\le2\cdot10^5\).
    -

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.