0
$\begingroup$

In a discussion below the Space Exploration question Are there any to-scale diagrams of the TRAPPIST-1 system I was invited to ask a question like this, so I have.

Question: Are the planets in the TRAPPIST-1 system so close that inhabitants on one planet could see surface details on the other planets? How big would each planet appear from each of the other planets during conjunction or opposition? Bigger than Earth's moon?

$\endgroup$
3
$\begingroup$

Are the planets in the TRAPPIST-1 system so close that inhabitants on one planet could see surface details on the other planets?

Yes!

How big would each planet appear from each of the other planets during conjunction or opposition? Bigger than Earth's moon?

For some combinations, definitely!

Here's a diagram of the size of each of the planets as seen from each of the other planets. I've taken the semi-major axes and planet radii from a table in Wikipedia and used the Python script below to show the apparent sizes at conjunction or opposition. The axes are labeled in degrees and the largest case is 1.28 degrees or 2.5 times the apparent size of the Moon from Earth!

   a (Gm)        R (km)
b:  1.73          7150
c:  2.37          6984
d:  3.33          5000
e:  4.38          5804
f:  5.76          6671
g:  7.01          7322
h:  9.27          4930

For example, the top row shows the largest possible size of planets c through h from planet b. The black dots indicate the planet with itself.

enter image description here

data = (('b', 1.73, 7150), ('c', 2.37, 6984), ('d', 3.33, 5000),
        ('e', 4.38, 5804), ('f', 5.76, 6671), ('g', 7.01, 7322),
        ('h', 9.27, 4930)) # https://en.wikipedia.org/wiki/TRAPPIST-1#Planetary_system_data_charts

class Planet(object):
    def __init__(self, name, a_Gm, r_km):
        self.name = name
        self.a    = 1E+09 * a_Gm
        self.r    = 1E+03 * r_km

import numpy as np
import matplotlib.pyplot as plt

halfpi, degs = 0.5*np.pi, 180/np.pi

planets = []
for thing in data:
    planets.append(Planet(*thing))

arc      = np.vstack([f(np.linspace(halfpi, -halfpi, 201)) for f in (np.cos, np.sin)])
f        = np.array([-1.0, 1.0])[:, None]
c        = np.array([+0.8, 1.0])[:, None]
full     = np.hstack((arc, f*arc[:, -2::-1]))
crescent = np.hstack((arc, c*arc[:, -2::-1]))

all_sizes = []
for p in planets:
    p.arcs = []
    for pp in planets:
        if pp == p:
            p.arcs.append(None)
        else:
            size = 2*pp.r/(pp.a-p.a)
            all_sizes.append(abs(size))
            if size > 0:
                p.arcs.append(size*full)
            else:
                p.arcs.append(size*crescent)

max_size = max(all_sizes)
print('max_size: ', max_size)

if True:
    plt.figure()
    for (i, p) in enumerate(planets):
        y0 = -max_size * degs * i
        for (j, arc) in enumerate(p.arcs):
            x0 = max_size * degs * j
            if type(arc) is type(None):
                plt.plot([x0], [y0], 'ok', markersize=6)
            else:
                x, y = degs*arc
                plt.plot(x+x0, y+y0)
    plt.show()
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.