Commit d7e79a94 by lyc

更新了连续动画

parent 5e6b6c73
...@@ -9,7 +9,7 @@ export function addMoonTrack() { ...@@ -9,7 +9,7 @@ export function addMoonTrack() {
}); });
var start = new Cesium.JulianDate.fromDate(new Date()); var start = new Cesium.JulianDate.fromDate(new Date());
start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate());
var stop = Cesium.JulianDate.addDays(start, 27.321582, new Cesium.JulianDate()); var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
viewer.clock.startTime = start.clone(); viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone(); viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone(); viewer.clock.currentTime = start.clone();
...@@ -20,7 +20,7 @@ export function addMoonTrack() { ...@@ -20,7 +20,7 @@ export function addMoonTrack() {
const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示) const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示)
const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离 const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离
// const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒) // const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒)
const period = 50 ; const period = 360 ;
// 定义轨道上的点数 // 定义轨道上的点数
const numberOfPoints = 1000; const numberOfPoints = 1000;
...@@ -44,6 +44,7 @@ export function addMoonTrack() { ...@@ -44,6 +44,7 @@ export function addMoonTrack() {
// 添加到位置数组 // 添加到位置数组
positions.push(cartographic); positions.push(cartographic);
} }
positions.push(positions[0])
return positions; return positions;
} }
// 创建轨道路径 // 创建轨道路径
...@@ -54,7 +55,7 @@ export function addMoonTrack() { ...@@ -54,7 +55,7 @@ export function addMoonTrack() {
// 创建SampledPositionProperty // 创建SampledPositionProperty
const orbitPosition = new Cesium.SampledPositionProperty(); const orbitPosition = new Cesium.SampledPositionProperty();
for (let i = 0; i < numberOfPoints; i++) { for (let i = 0; i <= numberOfPoints; i++) {
const time = Cesium.JulianDate.addSeconds(viewer.clock.startTime, i * period / numberOfPoints, new Cesium.JulianDate()); const time = Cesium.JulianDate.addSeconds(viewer.clock.startTime, i * period / numberOfPoints, new Cesium.JulianDate());
orbitPosition.addSample(time, cartesianPositions[i]); orbitPosition.addSample(time, cartesianPositions[i]);
} }
...@@ -67,12 +68,10 @@ export function addMoonTrack() { ...@@ -67,12 +68,10 @@ export function addMoonTrack() {
position: orbitPosition, position: orbitPosition,
orientation: new Cesium.VelocityOrientationProperty(orbitPosition), orientation: new Cesium.VelocityOrientationProperty(orbitPosition),
// 设置月球的形状 // 设置月球的形状
ellipsoid: { model: {
radii: new Cesium.Cartesian3(1737400.0, 1737400.0, 1737400.0), // 月球的平均半径 uri: 'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/moon.gltf',
material: new Cesium.ImageMaterialProperty({ minimumPixelSize: 100,
image: "/src/image/moon1.jpg", scale: 200.0,
repeat: new Cesium.Cartesian2(1, 1)
})
}, },
// 显示月球的运动轨迹 // 显示月球的运动轨迹
path: { path: {
......
...@@ -30,7 +30,7 @@ export function addSunTrack() { ...@@ -30,7 +30,7 @@ export function addSunTrack() {
viewer.scene.fog.enable = false; viewer.scene.fog.enable = false;
var start = new Cesium.JulianDate.fromDate(new Date()); var start = new Cesium.JulianDate.fromDate(new Date());
start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate());
var stop = Cesium.JulianDate.addDays(start, 27.321582, new Cesium.JulianDate()); var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
viewer.clock.startTime = start.clone(); viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone(); viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone(); viewer.clock.currentTime = start.clone();
...@@ -40,7 +40,7 @@ export function addSunTrack() { ...@@ -40,7 +40,7 @@ export function addSunTrack() {
const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示) const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示)
const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离 const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离
// const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒) // const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒)
const period = 50; const period = 360;
// 定义轨道上的点数 // 定义轨道上的点数
const numberOfPoints = 1000; const numberOfPoints = 1000;
function createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints) { function createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints) {
...@@ -56,12 +56,13 @@ export function addSunTrack() { ...@@ -56,12 +56,13 @@ export function addSunTrack() {
const cartographic = Cesium.Cartographic.fromCartesian(Cesium.Cartesian3.fromElements(x, y, z)); const cartographic = Cesium.Cartographic.fromCartesian(Cesium.Cartesian3.fromElements(x, y, z));
positions.push(cartographic); positions.push(cartographic);
} }
positions.push(positions[0])
return positions; return positions;
} }
const moonOrbitPositions = createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints); const moonOrbitPositions = createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints);
const cartesianPositions = moonOrbitPositions.map(position => Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height)); const cartesianPositions = moonOrbitPositions.map(position => Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height));
const orbitPosition = new Cesium.SampledPositionProperty(); const orbitPosition = new Cesium.SampledPositionProperty();
for (let i = 0; i < numberOfPoints; i++) { for (let i = 0; i <= numberOfPoints; i++) {
const time = Cesium.JulianDate.addSeconds(viewer.clock.startTime, i * period / numberOfPoints, new Cesium.JulianDate()); const time = Cesium.JulianDate.addSeconds(viewer.clock.startTime, i * period / numberOfPoints, new Cesium.JulianDate());
orbitPosition.addSample(time, cartesianPositions[i]); orbitPosition.addSample(time, cartesianPositions[i]);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment