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

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?

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. 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()