2024-08-06 20:37:57 +04:00

78 lines
2.0 KiB
JavaScript
Executable File

import {
math, Globe, control, utils, LonLat, GlobusTerrain, Vector, OpenStreetMap, Entity, Bing, GlobusRgbTerrain, Object3d
} from "../../lib/@openglobus/og.esm.js";
let myObjects = new Vector("MyObjects", {
scaleByDistance: [1, math.MAX32, 1]
});
function setPitch(a) {
myObjects.each((e) => {
e.geoObject.setPitch(a)
});
}
function setYaw(a) {
myObjects.each((e) => {
e.geoObject.setYaw(a);
});
}
function setRoll(a) {
myObjects.each((e) => {
e.geoObject.setRoll(a);
});
}
function main() {
let osm = new OpenStreetMap();
const obj = Object3d.createCylinder(0.01, 0.01, 1);
document.querySelector(".gpitch").addEventListener("input", (e) => {
setPitch(Number(e.target.value));
});
document.querySelector(".gyaw").addEventListener("input", (e) => {
setYaw(Number(e.target.value));
});
document.querySelector(".groll").addEventListener("input", (e) => {
setRoll(Number(e.target.value));
});
for (let i = -80; i < 80; i += 10) {
for (let j = -180; j < 180; j += 10) {
myObjects.add(new Entity({
lonlat: [j, i, 20000],
geoObject: {
color: "green",
scale: 0.1,
instanced: true,
tag: "plane",
object3d: obj,
yaw: 0,
pitch: 0
}
}));
}
}
const globus = new Globe({
target: "earth",
name: "Earth",
terrain: new GlobusRgbTerrain(),
layers: [osm, myObjects],
atmosphereEnabled: false,
fontsSrc: "../../res/fonts",
sun: {
stopped: false
}
});
globus.planet.addControl(new control.DebugInfo());
globus.planet.addControl(new control.KeyboardNavigation());
globus.planet.addControl(new control.ToggleWireframe());
globus.planet.addControl(new control.LayerSwitcher());
}
main()