首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pascal模数

Pascal模数
EN

Stack Overflow用户
提问于 2015-08-28 13:16:15
回答 2查看 322关注 0票数 1

我正在尝试将一些Pascal代码翻译成C++代码。我被卡住了,试图弄清楚如何翻译这一部分。

代码语言:javascript
复制
Function ThetaG_JD(jd : double) : double;
var
UT,TU,GMST : double;
begin
**UT   := Frac(jd + 0.5);**
jd   := jd - UT;
TU   := (jd - 2451545.0)/36525;
GMST := 24110.54841 + TU * (8640184.812866 + TU * (0.093104 - TU * 6.2E-6));
**GMST := Modulus(GMST + 86400.0*1.00273790934*UT,86400.0);**
ThetaG_JD := twopi * GMST/86400.0;
end; {Function ThetaG_JD}

对于我加粗的两行代码,我尤其感到困扰。如何将其转换为c++?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-08-28 13:37:59

在C++中,等效函数为:

获取浮点模数的fmod

modf将浮点数项分为小数部分和整数部分(等同于Frac)。

票数 0
EN

Stack Overflow用户

发布于 2017-02-05 05:02:45

如果您想计算本地朱利安日、格林威治标准恒星时间本地平均恒星时间,也许下面的内容可以帮助您-以PowerShell编写

代码语言:javascript
复制
<#
    .Synopsis
    Astronomy calculations

    .Description
    Some helper functions to calculate:
    - Julian Day,
    - Greenwich Mean Sidereal time,
    - Local Mean Sidereal Time.
#>
cls

# https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
function Get-JulianDay
{
    param ( [System.DateTime]$dt )
    $year = $dt.Year
    $month = $dt.Month
    $day = $dt.Day
    $hour = $dt.Hour
    $minute = $dt.Minute
    $second = $dt.Second
    $a = [System.Math]::Floor((14 - $month) / 12)
    $y = $year + 4800 - $a
    $m = $month + 12 * $a - 3
    $JDN = $day + [System.Math]::Floor((153 * $m + 2) / 5) + 365 * $y + [System.Math]::Floor($y / 4) - [System.Math]::Floor($y / 100) + [System.Math]::Floor($y / 400) - 32045
    $JD = $JDN + ($hour - 12) / 24 + $minute / 1440 + $second / 86400
    return ($JD)
}

# https://en.wikipedia.org/wiki/Sidereal_time#Definition
# http://aa.usno.navy.mil/faq/docs/GAST.php
function Get-GMST
{
    param ( [double]$JD )
    $D = $JD - 2451545.0
    $GMST = 18.697374558 + 24.06570982441908 * $D
    return ($GMST % 24)
}

function Get-LMST
{
    param ( [double]$gmst, [double]$longitude )
    return ( $gmst + $longitude / 15.0 )
}

# Test above functions
$current = (Get-Date).ToUniversalTime()
$jd = Get-JulianDay -dt $current
$gmst = Get-GMST -JD $jd
$longitude = 17.668487800
$lmst = Get-LMST -gmst $gmst -longitude $longitude
$lst = [timespan]::FromHours($lmst).ToString()
Write-Host "Local mean sidereal time: $lst"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32263754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档