import "./hipparcos_7_concise.js" import CatalogSkybox from "./CatalogSkybox.js"; function createSkyboxImage(faceId, width) { // 恒星亮度(等级),亮度等级越小,亮度越大 const magBright = -1; const magMedium = 7; const magDim = 12; // 恒星大小,单位像素 const sizeBright = 5; const sizeMedium = 1; const sizeDim = 0.1; // 恒星透明度 const translucentBright = 0.0; const translucentMedium = 0.25; const translucentDim = 0.8; const d2r = Math.PI / 180; // 创建width*width的jpg格式的图片,背景为黑色,随机生成1000个像素点,颜色为白色,大小从1到5像素不等 var canvas = document.createElement('canvas'); canvas.width = width; canvas.height = width; var context = canvas.getContext('2d'); // 黑色背景 context.fillStyle = 'black'; context.fillRect(0, 0, width, width); // 循环hipparcos数据,hipparcos_catalog为数组 for (var i = 0; i < hipparcos_catalog.length; i++) { var star = hipparcos_catalog[i]; var mag = star[1]; var ra = star[2]; var dec = star[3]; // 赤经、赤纬转换为弧度 if (ra > 180) { ra = ra - 360; } ra = ra * d2r; dec = dec * d2r; // 赤经、赤纬转换为立方盒子坐标,再转换为图片坐标 let { x, y, z } = CatalogSkybox.sphere2CubeXyz(ra, dec); // 转换为图片坐标(i,为横坐标,向右,[0,1]), (j为纵坐标,向下,[0,1]) let { i, j, faceId0 } = CatalogSkybox.cubeXyzToImgUV(x, y, z); if (faceId !== faceId0) { continue; } // 像素大小 let size = sizeBright; if (mag > magMedium && mag <= magBright) { size = sizeMedium + (sizeBright - sizeMedium) * (mag - magMedium) / (magBright - magMedium); } // 图像坐标系下的坐标 let u = i * width - size / 2; let v = j * width - size / 2; if (u < 0) { u = 0; } if (v < 0) { v = 0; } // 画点 context.fillStyle = 'white'; context.fillRect(u, v, size, size); } var dataUrl = canvas.toDataURL('image/jpeg'); // 将这个图片插入到id为img1的img元素中 //var img1 = document.getElementById('img1'); //img1.src = dataUrl; return dataUrl; var image = new Image(); image.src = dataUrl; return image; // 将这个图片插入到id为img1的img元素中 //var img1 = document.getElementById('img1'); //img1.src = dataUrl; } export default createSkyboxImage;