当前位置:首页 > JavaScript

js实现星球转动

2026-03-15 13:28:01JavaScript

使用 Three.js 实现星球转动

Three.js 是一个基于 WebGL 的 JavaScript 库,用于创建 3D 图形。以下是实现星球转动的基本步骤:

  1. 引入 Three.js 在 HTML 文件中引入 Three.js 库:

    <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/three.min.js"></script>
  2. 创建场景、相机和渲染器

    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
    const renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
  3. 创建星球

    const geometry = new THREE.SphereGeometry(5, 32, 32);
    const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
    const sphere = new THREE.Mesh(geometry, material);
    scene.add(sphere);
  4. 设置相机位置

    js实现星球转动

    camera.position.z = 15;
  5. 实现动画循环

    function animate() {
        requestAnimationFrame(animate);
        sphere.rotation.y += 0.01;
        renderer.render(scene, camera);
    }
    animate();

使用 CSS 和 JavaScript 实现 2D 星球转动

  1. HTML 结构

    <div class="planet"></div>
  2. CSS 样式

    js实现星球转动

    .planet {
        width: 100px;
        height: 100px;
        background: radial-gradient(circle at 30% 30%, #fff, #00f);
        border-radius: 50%;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }
  3. JavaScript 动画

    const planet = document.querySelector('.planet');
    let angle = 0;
    const radius = 200;
    
    function animate() {
        angle += 0.01;
        const x = Math.cos(angle) * radius;
        const y = Math.sin(angle) * radius;
        planet.style.transform = `translate(calc(-50% + ${x}px), calc(-50% + ${y}px))`;
        requestAnimationFrame(animate);
    }
    animate();

使用 Canvas 实现星球转动

  1. HTML 结构

    <canvas id="canvas"></canvas>
  2. JavaScript 代码

    const canvas = document.getElementById('canvas');
    const ctx = canvas.getContext('2d');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    
    let angle = 0;
    const radius = 100;
    const centerX = canvas.width / 2;
    const centerY = canvas.height / 2;
    
    function drawPlanet(x, y) {
        ctx.beginPath();
        ctx.arc(x, y, 30, 0, Math.PI * 2);
        ctx.fillStyle = 'blue';
        ctx.fill();
    }
    
    function animate() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        angle += 0.01;
        const x = centerX + Math.cos(angle) * radius;
        const y = centerY + Math.sin(angle) * radius;
        drawPlanet(x, y);
        requestAnimationFrame(animate);
    }
    animate();

注意事项

  • 性能优化:对于复杂的 3D 场景,建议使用 WebGL 或 Three.js 以获得更好的性能。
  • 交互性:可以通过事件监听器实现用户交互,例如拖动或缩放。
  • 兼容性:确保目标浏览器支持所使用的技术(如 WebGL 或 Canvas)。

标签: 星球js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…