GNSS 單點定位程式總結 二 時間系統模組

2021-10-19 04:36:24 字數 4495 閱讀 6430

儒略日(julian day,jd)是指由西元前2023年1月1日,協調世界時中午12時開始所經過的天數,多為天文學家採用,用以作為天文學的單一曆法,把不同曆法的年表統一起來。如果計算相隔若干年的兩個日期之間間隔的天數,利用儒略日就比較方便。

在程式中,用結構體jdtime表示儒略日時間,結構體定義如下12

3456

78910

1112

/* 儒略日; */

struct

jdtime

}; 1

2345

6789

1011

12/*

簡化儒略日; */

struct

mjdtime

}; 1

2345

6789

10/*

通用時間定義; */

struct

commontime ;

1234

5678

9101112

13/* gps

時間定義 */

struct

gpstime

}; 無

1.儒略日到簡化儒略日轉換公式

假設簡化儒略日表示為mjd ,儒略日表示為jd 。我們可以得到jd=mjd-

2400000.5

3.轉換程式**

儒略日到簡化儒略日12

3456

7bool

jdtime2mjdtime

(const

jdtime jd

,mjdtime

*mjd)

簡化儒略日到儒略日12

3456

7bool

mjdtime2jdtime

(const

mjdtime mjd

,jdtime*jd

) 1.儒略日到通用時轉換公式

2.通用時到儒略日轉換公式

jd=int[365.25y]+int[30.6001(m+1)]+d+ut/24+1720981.5

mjd=jd

-2400000.5

其中:如果m≤

2 ,則y=y

-1,m=m+12

如果m>2 ,則y=y,m=m

jd 為儒略日

y 為年,m 為月, d為日,ut 為世界時

int 表示取實數的整數部分

3.轉換程式**

儒略日到通用時12

3456

78910

1112

1314

1516

1718

1920

2122

23bool

jdtime2commontime

(const

jdtime jd

,commontime

*common)

通用時到儒略日12

3456

78910

1112

1314

1516

1718

1920

21bool

commontime2jdtime

(const

commontime common

,jdtime*jd

) if(

common

.month

>2)

ut =common

.hour

+common

.minute

/60.0

+common

.second

/3600.0

; temptjd =(

int)(

365.25*y

)+(int

)(30.6001

*(m +1

))+common

.day

+ut

/24.0

+1720981.5

; jd

->

days =(

int)(

temptjd

); jd

->

fracday =(

temptjd

)-jd

->

days

; return

true; }

1.儒略日到gpst轉換公式

先將儒略日轉換為簡化儒略日

mjd=jd+2400000.5

再從簡化儒略日轉換gpst

gpsweek=int[(mjd

-44244)/7]

secofweek=(mjd

-44244

-gpsweek×7)

×86400

2.gpst到儒略日轉換公式

mjd=44244+gpsweek

×7+secofweek/86400

3.轉換程式**

儒略日到gpst12

3456

bool

jdtime2gpstime

(const

jdtime jd

,gpstime

*gps)

gpst到儒略日12

3456

78bool

gpstime2jdtime

(const

gpstime gps

,jdtime*jd

) 1.簡化儒略日到通用時轉換公式

jd=mjd+2400000.5,

a=int[jd+0.5]

b=a+1537

c=int[(b

-122.1)/365.25]

d=int[365.25×c]

e=int[(b

-d)/30.6001]

day=b-d

-int[30.6001

×e]+frac[jd+0.5]

month=e

-1-12

×int[e/14]

year=c

-4715

-int[(7+m)/10]

number=

mod(number=0,monday

⋯number=7,sunday)

hour=int

minute=int

seco

nd=int

2.通用時到簡化儒略日轉換公式

mjd=int[365.25

×y]+int[30.6001

×(m+1)]+day+ut/24

-679019

其中:如果m≤2 ,則y=year

-1,m=mout

h+12

如果m>2 ,則y=year,m=mouth

ut表示世界時

3.轉換程式**

簡化儒略日到通用時12

3456

78910

1112

1314

1516

1718

1920

bool

mjdtime2commtime

(const

mjdtime mjd

,commontime

*common)

通用時到簡化儒略日12

3456

78910

1112

1314

1516

1718

1920

2122

23bool

commontime2mjdtime

(const

commontime common

,mjdtime

*mjd)

if(common

.month

>2)

ut =common

.hour

+common

.minute

/60.0

+common

.second

/3600.0

; jd =(

int)(

365.25*y

)+(int

)(30.6001

*(m +1

))+common

.day

+ut

/24.0

+1720981.5

; mjd

->

days =(

int)(

365.25*y

)+(int

)(30.6001

*(m +1

))+common

.day

+ut

/24.0

+1720981.5

-2400000.5

; mjd

->

fracday =(

ut /

24.0)-

(int

)(ut

/24.0);

return

true; }

小程式實現錨點定位

在小程式中要實現錨點定位,需要使用到元件scroll view 需要用到的是scroll into view這條屬性,這條屬性的官網解釋是這樣的 scroll into viewstring 值應為某子元素id id不能以數字開頭 設定哪個方向可滾動,則在哪個方向滾動到該元素 於是乎,我們只需要給s...

js錨點定位

最好是name和id都是st。避免有些特殊情況 普通定位方式是在位址後面加上 st即可,現想通過js實現定位,如下 window.location.hash st 非js形式 zkm hxy 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 zkm b ...

計算幾何 點定位

2.判斷點是否在多邊形內 1 掃瞄法 用一條水平向右的射線判斷與多邊形相交的點數,若為奇數則在多邊形內,為偶數則在多邊形外。注 1 若其中乙個交點是多邊形的頂點,則需要判斷是否是凹多邊形,具體處理辦法為比較相鄰兩個頂點的叉積的積,小於0則不用改動,若大於0需要在計數時刪掉該點。2 若與一條邊相交,則...