Commit d7e79a94 by lyc

更新了连续动画

parent 5e6b6c73
......@@ -9,7 +9,7 @@ export function addMoonTrack() {
});
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());
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
......@@ -20,7 +20,7 @@ export function addMoonTrack() {
const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示)
const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离
// const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒)
const period = 50 ;
const period = 360 ;
// 定义轨道上的点数
const numberOfPoints = 1000;
......@@ -44,6 +44,7 @@ export function addMoonTrack() {
// 添加到位置数组
positions.push(cartographic);
}
positions.push(positions[0])
return positions;
}
// 创建轨道路径
......@@ -54,7 +55,7 @@ export function addMoonTrack() {
// 创建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());
orbitPosition.addSample(time, cartesianPositions[i]);
}
......@@ -67,12 +68,10 @@ export function addMoonTrack() {
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)
})
model: {
uri: 'https://raw.githubusercontent.com/jinlinchao123/Cesium-assets/main/3Dmodel/moon.gltf',
minimumPixelSize: 100,
scale: 200.0,
},
// 显示月球的运动轨迹
path: {
......
......@@ -30,7 +30,7 @@ export function addSunTrack() {
viewer.scene.fog.enable = 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());
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
......@@ -40,7 +40,7 @@ export function addSunTrack() {
const inclination = Cesium.Math.toRadians(28.5); // 轨道倾角(以弧度表示)
const semiMajorAxis = 38440000; // 半长轴(米),大约为月球到地球的平均距离
// const period = 27.321582 * 24 * 60 * 60; // 月球的公转周期(秒)
const period = 50;
const period = 360;
// 定义轨道上的点数
const numberOfPoints = 1000;
function createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints) {
......@@ -56,12 +56,13 @@ export function addSunTrack() {
const cartographic = Cesium.Cartographic.fromCartesian(Cesium.Cartesian3.fromElements(x, y, z));
positions.push(cartographic);
}
positions.push(positions[0])
return positions;
}
const moonOrbitPositions = createMoonOrbit(inclination, semiMajorAxis, period, numberOfPoints);
const cartesianPositions = moonOrbitPositions.map(position => Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height));
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());
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