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
    }
    }
    

    附上效果图

    撒点

  • 相关阅读:
    window.top.location
    JS 退出系统并跳转到登录界面的实现代码
    CSS position 属性
    在网页中插入时间 自动更新
    CKeditor 配置使用
    使用JspSmart文件上传
    复制的web工程为什么不能部署到tomcat
    JDBC 4 PreparedStatement 与Statement 的区别
    每周会商自动化
    晚上的亲子时光
  • 原文地址:https://www.cnblogs.com/giser-s/p/12928595.html
Copyright © 2011-2022 走看看