Я использую следующий R-скрипт для построения фазы луны и освещенности луны:
library(oce)
X11()
t_start <- as.POSIXct("2017-02-23", tz='UTC')
t_end <- t_start + 75 * 24 * 3600 # 35 days
tm <- seq(from = t_start,
to = t_end,
by = 10000
)
moon <- moonAngle(t=tm, longitude=-8, latitude=47)
fraction <- moon$illuminatedFraction
phase <- moon$phase - floor(moon$phase)
plot (tm, fraction, type="l", col='blue')
lines(tm, phase , type="l", col='red' )
grid()
# wait for mouse click or enter pressed
locator(1)
Красные линии указывают фазу (0 = новолуние, 1/4 = первая четверть, 1/2 = полнолуние и т. д.), синяя кривая показывает, насколько освещена луна.
Я ожидал, что освещенная часть будет равна нулю именно тогда, когда и фаза равна нулю. Тем не менее, это не так.
Итак, есть ли что-то, что мне не хватает, я делаю что-то не так в своем сценарии или реализация oce
неточна?
Это частичный ответ, так как ваш вопрос все еще не ясен. Я бы рекомендовал найти астрономический пакет для таких инструментов, а не использовать то, что в основном является «бонусной функцией» из океанографического пакета.
На страницах справки для package oce
,
Освещенная
доля видимого диска Луны, которая соответствует освещенной
фазовой
фазе Луны, определенной в уравнении 32.3 Меуса [1982]. Дробная часть которого равна 0 для новолуния, 1/4 для первой четверти, 1/2 для полнолуния и 3/4 для последней четверти.
Возможно, вы упускаете тот факт, что освещено чуть более 50% Луны, и, таким образом, в первой/последней четверти освещено чуть более 50% видимого диска? Я бы также порекомендовал посмотреть упомянутое «уравнение 32.3», чтобы увидеть, что это за определение и как оно применимо к зрителю с нулевой высоты.
moonAngle
.Синяя fraction
функция достигает своего максимума во время полнолуния, 12 марта на вашей диаграмме.
В это время дробная часть красного phase
, т . е moon$phase - floor(moon$phase)
. достигает 0,5, потому что полнолуние приходится на половину времени.
Я не вижу здесь никакого "рассинхрона".
Карл Виттофт
R
пакет, который вы используете. Во-вторых, вы можете проверить всю документацию, предоставленную в этом пакете, чтобы увидеть, есть ли какие-либо обсуждения известных неточностей. В-третьих, можете ли вы объяснить, почему вы используетеfloor
вместоmin
?Рене Ниффенеггер
floor
вместоmin
.