Dependencies

library(tidyverse)
library(lubridate)
library(sphereplot)
library(plotly)

Read Data

rsotraj <- read.csv('../../../tmp/nasa/spdf/solar-orbiter/helio1day/solo_helio1day_position_20200211_v01.csv')

Convert date time

sotraj <- rsotraj %>% mutate(
  ts = as_datetime(time / 1000),
  elapsed = (time - rsotraj$time[1]) / 86400000)

Range

Time range

summary(sotraj$ts)
##         Min.      1st Qu.       Median         Mean      3rd Qu.         Max. 
## "2020-02-11" "2022-10-21" "2025-06-30" "2025-06-30" "2028-03-09" "2030-11-17"

Distance range

summary(sotraj$rad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2900  0.5300  0.7100  0.6818  0.8400  1.0100

Transforms 3D spherical coordinates to Cartesian coordinates

hcart <- sph2car(sotraj$lon, sotraj$lat, sotraj$rad)
sotraj <- sotraj %>% mutate(x = hcart[,1], y = hcart[,2], z = hcart[,3])

Plots

current <- now()

Distance from sun

ggplot(data = sotraj, mapping = aes(x = ts, y = rad)) + geom_point(color = 'blue') +
  labs(title = "Solar Orbiter Trajectory data", x = "Time", y = "Distance from Sun (AU)") +
  geom_vline(xintercept = as.numeric(current), linetype = 'dashed', color = 'blue') +
  theme_light()

3D Scatter

Time in Trajectory

sotraj %>% select(x, y, z, Time = elapsed) %>%
  plot_ly(x = ~x, y = ~y, z = ~z, color = ~Time) %>%
  add_markers() %>%
  layout(scene = list(
    xaxis = list(title = 'AU'),
    yaxis = list(title = 'AU'),
    zaxis = list(title = 'AU')))

Distance in Trajectory

sotraj %>% select(x, y, z, Distance = rad) %>%
  plot_ly(x = ~x, y = ~y, z = ~z, color = ~Distance) %>%
  add_markers() %>%
  layout(scene = list(
    xaxis = list(title = 'AU'),
    yaxis = list(title = 'AU'),
    zaxis = list(title = 'AU')))

One over Distance in Trajectory

sotraj %>% mutate(oneover = 1/rad) %>% select(x, y, z, Distance = oneover) %>%
  plot_ly(x = ~x, y = ~y, z = ~z, color = ~Distance) %>%
  add_markers() %>%
  layout(scene = list(
    xaxis = list(title = 'AU'),
    yaxis = list(title = 'AU'),
    zaxis = list(title = 'AU')))