zoukankan      html  css  js  c++  java
  • ThreeJS 地球上撒点

    环境

    • ThreeJS 107版本
    • three.min.js
    • OrbitControls.js

    说明

    撒点功能原理是在地球上根据坐标批量加上圆对象,可以设置颜色和球大小。

    解决方案

    1. 创建球的过程参见"ThreeJS制作地球"

    2. 创建点group,考虑后面会做删除功能,所以把所有的实体都以group组为单位添加,后续方便做删除

    // 标记点组合
    var marking = new THREE.Group();
    
    1. 根据数据,循环添加圆以及材质
    for (var i = 0; i < _markData.length; i++) {
    // 创建标记点球体
    var mark = new THREE.Mesh(new THREE.SphereGeometry(radius, 30, 30), new THREE.MeshBasicMaterial({
    color: _style.color ? _style.color : '#1bb4b0'
    }));
    // 获取标记点坐标
    var markPos = this.getPosition(_markData[i].attributes.x + 90, _markData[i].attributes.y, 30);
    mark.position.set(markPos.x, markPos.y, markPos.z);
    marking.add(mark);
    }
    scene.add(marking);
    
    1. 经纬度转球坐标
    this.getPosition = function (_longitude, _latitude, _radius) {
    var lg = THREE.Math.degToRad(_longitude);
    var lt = THREE.Math.degToRad(_latitude);
    var temp = _radius * Math.cos(lt);
    var x = temp * Math.sin(lg);
    var y = _radius * Math.sin(lt);
    var z = temp * Math.cos(lg);
    return {
    x: x,
    y: y,
    z: z
    }
    }
    

    附上效果图

    撒点

  • 相关阅读:
    福利 | 简历模板大放送
    如何脱颖而出?成为优秀的人
    未来最重要的三个能力
    如何提升你的阅读能力?
    2016 Top 10 Android Library
    如何提升你的面试机会?
    推荐一些非常有用的学习网站
    谈谈学习方法
    你为什么还不够优秀?
    vue
  • 原文地址:https://www.cnblogs.com/giser-s/p/12928595.html
Copyright © 2011-2022 走看看