Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cesium-frame
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jlc
cesium-frame
Commits
53eba445
Commit
53eba445
authored
Jul 29, 2024
by
lyc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新了月球轨道
parent
22c07ef0
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
134 additions
and
0 deletions
+134
-0
CodeMap.js
src/examples/CodeMap.js
+7
-0
FunctionMap.js
src/examples/FunctionMap.js
+6
-0
moonTrack-function.js
src/examples/spaceMissions/moonTrack/moonTrack-function.js
+103
-0
moonTrack.vue
src/examples/spaceMissions/moonTrack/moonTrack.vue
+18
-0
No files found.
src/examples/CodeMap.js
View file @
53eba445
// 太空任务
import
vueCodeMoonTrack
from
'@/examples/spaceMissions/moonTrack/moonTrack.vue?raw'
// 测站
import
vueCodeAddStation
from
'@/examples/measureStation/addStation/addStation.vue?raw'
import
vueCodeStationCoordinate
from
'@/examples/measureStation/stationCoordinate/stationCoordinate.vue?raw'
...
...
@@ -29,6 +32,10 @@ import vueCodeWaterSurface from '@/examples/weather/waterSurface/waterSurface.vu
const
vueCodeMap
=
{
// 太空任务
月球轨道
:
vueCodeMoonTrack
,
// 测站
添加测站
:
vueCodeAddStation
,
测站坐标系
:
vueCodeStationCoordinate
,
...
...
src/examples/FunctionMap.js
View file @
53eba445
//太空任务
import
functionCodeMoonTrack
from
'@/examples/spaceMissions/moonTrack/moonTrack-function.js?raw'
// 测站
import
functionCodeAddStation
from
'@/examples/measureStation/addStation/addStation-function.js?raw'
import
functionCodeStationCoordinate
from
'@/examples/measureStation/stationCoordinate/stationCoordinate-function.js?raw'
...
...
@@ -29,6 +32,9 @@ import functionCodeWaterSurface from '@/examples/weather/waterSurface/waterSurfa
const
functionCodeMap
=
{
// 太空任务
月球轨道
:
functionCodeMoonTrack
,
// 测站
添加测站
:
functionCodeAddStation
,
测站坐标系
:
functionCodeStationCoordinate
,
...
...
src/examples/spaceMissions/moonTrack/moonTrack-function.js
0 → 100644
View file @
53eba445
export
function
addMoonTrack
()
{
const
script
=
document
.
createElement
(
'script'
);
script
.
src
=
'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js'
;
script
.
onload
=
()
=>
{
window
.
Cesium
.
Ion
.
defaultAccessToken
=
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
const
viewer
=
new
window
.
Cesium
.
Viewer
(
'cesiumContainer'
,
{
infoBox
:
false
,
});
var
start
=
new
Cesium
.
JulianDate
.
fromDate
(
new
Date
());
start
=
Cesium
.
JulianDate
.
addHours
(
start
,
8
,
new
Cesium
.
JulianDate
());
var
stop
=
Cesium
.
JulianDate
.
addDays
(
start
,
27.321582
,
new
Cesium
.
JulianDate
());
viewer
.
clock
.
startTime
=
start
.
clone
();
viewer
.
clock
.
stopTime
=
stop
.
clone
();
viewer
.
clock
.
currentTime
=
start
.
clone
();
viewer
.
clock
.
clockRange
=
Cesium
.
ClockRange
.
LOOP_STOP
;
viewer
.
clock
.
multiplier
=
1
;
viewer
.
timeline
.
zoomTo
(
start
,
stop
);
const
inclination
=
Cesium
.
Math
.
toRadians
(
28.5
);
// 轨道倾角(以弧度表示)
const
semiMajorAxis
=
38440000
;
// 半长轴(米),大约为月球到地球的平均距离
// const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒)
const
period
=
50
;
// 定义轨道上的点数
const
numberOfPoints
=
1000
;
function
createMoonOrbit
(
inclination
,
semiMajorAxis
,
period
,
numberOfPoints
)
{
const
positions
=
[];
// 计算每个点的位置
for
(
let
i
=
0
;
i
<
numberOfPoints
;
i
++
)
{
const
meanAnomaly
=
(
2
*
Math
.
PI
/
period
)
*
(
i
*
period
/
numberOfPoints
);
// 平均异常
const
trueAnomaly
=
meanAnomaly
;
// 简化处理,假设轨道是圆的
const
radius
=
semiMajorAxis
;
// 圆轨道的半径等于半长轴
// 计算笛卡尔坐标
const
x
=
radius
*
Math
.
cos
(
trueAnomaly
);
const
y
=
radius
*
Math
.
sin
(
trueAnomaly
)
*
Math
.
cos
(
inclination
);
const
z
=
radius
*
Math
.
sin
(
trueAnomaly
)
*
Math
.
sin
(
inclination
);
// 将笛卡尔坐标转换为经纬度坐标
const
cartographic
=
Cesium
.
Cartographic
.
fromCartesian
(
Cesium
.
Cartesian3
.
fromElements
(
x
,
y
,
z
));
// 添加到位置数组
positions
.
push
(
cartographic
);
}
return
positions
;
}
// 创建轨道路径
const
moonOrbitPositions
=
createMoonOrbit
(
inclination
,
semiMajorAxis
,
period
,
numberOfPoints
);
// 将轨道位置转换为Cartesian3坐标
const
cartesianPositions
=
moonOrbitPositions
.
map
(
position
=>
Cesium
.
Cartesian3
.
fromRadians
(
position
.
longitude
,
position
.
latitude
,
position
.
height
));
// 创建SampledPositionProperty
const
orbitPosition
=
new
Cesium
.
SampledPositionProperty
();
for
(
let
i
=
0
;
i
<
numberOfPoints
;
i
++
)
{
const
time
=
Cesium
.
JulianDate
.
addSeconds
(
viewer
.
clock
.
startTime
,
i
*
period
/
numberOfPoints
,
new
Cesium
.
JulianDate
());
orbitPosition
.
addSample
(
time
,
cartesianPositions
[
i
]);
}
const
moonEntity
=
viewer
.
entities
.
add
({
name
:
'Moon'
,
availability
:
new
Cesium
.
TimeIntervalCollection
([
new
Cesium
.
TimeInterval
({
start
:
start
,
stop
:
stop
})]),
position
:
orbitPosition
,
orientation
:
new
Cesium
.
VelocityOrientationProperty
(
orbitPosition
),
// 设置月球的形状
ellipsoid
:
{
radii
:
new
Cesium
.
Cartesian3
(
1737400.0
,
1737400.0
,
1737400.0
),
// 月球的平均半径
material
:
new
Cesium
.
ImageMaterialProperty
({
image
:
"/src/image/moon1.jpg"
,
repeat
:
new
Cesium
.
Cartesian2
(
1
,
1
)
})
},
// 显示月球的运动轨迹
path
:
{
resolution
:
1
,
material
:
new
Cesium
.
PolylineGlowMaterialProperty
({
glowPower
:
0.1
,
color
:
Cesium
.
Color
.
PINK
}),
width
:
5
}
});
// 设置插值选项
moonEntity
.
position
.
setInterpolationOptions
({
interpolationDegree
:
5
,
interpolationAlgorithm
:
Cesium
.
LagrangePolynomialApproximation
});
};
document
.
head
.
appendChild
(
script
);
const
link
=
document
.
createElement
(
'link'
);
link
.
rel
=
'stylesheet'
;
link
.
href
=
'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css'
;
document
.
head
.
appendChild
(
link
);
}
src/examples/spaceMissions/moonTrack/moonTrack.vue
0 → 100644
View file @
53eba445
<
template
>
<div
id=
"cesiumContainer"
class=
"cesium-container"
></div>
</
template
>
<
script
setup
>
import
{
onMounted
}
from
'vue'
;
import
{
addMoonTrack
}
from
'./function'
;
onMounted
(()
=>
{
addMoonTrack
()
});
</
script
>
<
style
>
.cesium-container
{
width
:
100%
;
height
:
100vh
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment