精华内容
下载资源
问答
  • 那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地方呢?下面我就来一一列举1.场景。场景什么,说得简单一点,场景就是一个canvas ,我们就是要在Canvas上面实现3D效果的画面而已。场景和容器,相机...

    第一篇就画一个球体吧

    首先我们知道Three.js其实是一个3D的JS引擎,其中的强大之处就在于这个JS框架并不是依托于JQUERY来写的。那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地方呢?下面我就来一一列举

    1.场景。

    场景是什么,说得简单一点,场景就是一个canvas ,我们就是要在Canvas上面实现3D效果的画面而已。场景和容器,相机是息息相关的,我们就拿拍戏来说,假如我们需要演一个古装剧的撕逼场景,那么,我们需要的道具其中之一就是一个相机。

    2.容器

    就是承载球体的DIV,比如我们要演戏,那么演戏的场地,比如某个山清水秀的地方。

    3.相机

    简单一点说,就是你从屏幕里面看这个球体的样子,说得不太明白?其实很简单,你想一下你在玩生化危机的时候的,是不是第一人称?那么你看到的不同的怪物,以不同的视角去看的话,那么得到的结果,就会有差异,这个就是相机的作用。

    4.演员(这里指的是球体)

    这个就太容易了,不过以后我提到的可不一定是球体哦,也许是正方体,也许是一个复杂的形状都有可能,THREE.JS提供了很多的“库”,这些库可以绘制出不同的形状的物体,对于初学者来说,理解这些就足够了。

    代码

    代码不是特别的复杂,大家理解的话可以按照层级关系来理解,比如场景里面添加相机什么的,反正就是一层一层的套,英语的话有一些专有词汇,

    //设置场景的大小

    var width = 400;

    var height = 300;

    //设置相机的一些参数。

    var view_angle = 45;

    aspect = width / height;

    near = 0.1;

    far = 10000;

    //设置容器

    var $container = $("#container");

    //新建一个WebGL 渲染,以及相机

    var renderer = new THREE.WebGLRenderer();

    var camera =

    new THREE.PerspectiveCamera(

    view_angle, aspect, near, far

    );

    var scene = new THREE.Scene();

    //把相机添加到场景里面

    scene.add(camera);

    camera.position.z = 300;

    renderer.setSize(width, height);

    //附加DOM元素

    $container.append(renderer.domElement);

    //设置球体的值

    var radius = 50, segemnt = 16, rings = 16;

    var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0xCC0000 });

    var sphere = new THREE.Mesh(

    new THREE.SphereGeometry(radius,segemnt,rings),

    sphereMaterial

    );

    sphere.geometry.verticesNeedUpdate = true;

    sphere.geometry.normalsNeedUpdate = true;

    scene.add(sphere);

    var pointLight = new THREE.PointLight(0XFFFFFF);

    pointLight.position.x = 10;

    pointLight.position.y = 50;

    pointLight.position.z = 150;

    scene.add(pointLight);

    //画图

    renderer.render(scene, camera);

    最终效果

    由于我也是初学者,所以给大家的帮助也很有限,不过我会努力的,经常把自己学习Three.js的一些心得分享出来,共勉之!

    展开全文
  • 那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地方呢?下面我就来一一列举 1.场景。  场景什么,说得简单一点,场景就是一个canvas ,我们就是要在Canvas上面实现3D效果的画面而已。场景和容器,...

     第一篇就画一个球体吧

      首先我们知道Three.js其实是一个3D的JS引擎,其中的强大之处就在于这个JS框架并不是依托于JQUERY来写的。那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地方呢?下面我就来一一列举

    1.场景。

      场景是什么,说得简单一点,场景就是一个canvas ,我们就是要在Canvas上面实现3D效果的画面而已。场景和容器,相机是息息相关的,我们就拿拍戏来说,假如我们需要演一个古装剧的撕逼场景,那么,我们需要的道具其中之一就是一个相机。

    2.容器

      就是承载球体的DIV,比如我们要演戏,那么演戏的场地,比如某个山清水秀的地方。

    3.相机

      简单一点说,就是你从屏幕里面看这个球体的样子,说得不太明白?其实很简单,你想一下你在玩生化危机的时候的,是不是第一人称?那么你看到的不同的怪物,以不同的视角去看的话,那么得到的结果,就会有差异,这个就是相机的作用。

    4.演员(这里指的是球体)

      这个就太容易了,不过以后我提到的可不一定是球体哦,也许是正方体,也许是一个复杂的形状都有可能,THREE.JS提供了很多的“库”,这些库可以绘制出不同的形状的物体,对于初学者来说,理解这些就足够了。

    代码

      代码不是特别的复杂,大家理解的话可以按照层级关系来理解,比如场景里面添加相机什么的,反正就是一层一层的套,英语的话有一些专有词汇,

    <div id="container"></div>
    
    <script>
        //设置场景的大小
        var width = 400;
        var height = 300;
    
        //设置相机的一些参数。
        var view_angle = 45;
        aspect = width / height;
        near = 0.1;
        far = 10000;
    
        //设置容器
        var $container = $("#container");
    
        //新建一个WebGL 渲染,以及相机
        var renderer = new THREE.WebGLRenderer();
        var camera =
            new THREE.PerspectiveCamera(
            view_angle, aspect, near, far
            );
        var scene = new THREE.Scene();
    
        //把相机添加到场景里面
        scene.add(camera);
    
        camera.position.z = 300;
    
        renderer.setSize(width, height);
    
        //附加DOM元素
        $container.append(renderer.domElement);
    
        //设置球体的值
        var radius = 50, segemnt = 16, rings = 16;
    
        var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0xCC0000 });
    
        var sphere = new THREE.Mesh(
            new THREE.SphereGeometry(radius,segemnt,rings),
            sphereMaterial
            );
    
        sphere.geometry.verticesNeedUpdate = true;
        sphere.geometry.normalsNeedUpdate = true;
    
        scene.add(sphere);
    
        var pointLight = new THREE.PointLight(0XFFFFFF);
    
        pointLight.position.x = 10;
        pointLight.position.y = 50;
        pointLight.position.z = 150;
    
        scene.add(pointLight);
    
        
        //画图
        renderer.render(scene, camera);
    
    </script>
    

      

    最终效果

      由于我也是初学者,所以给大家的帮助也很有限,不过我会努力的,经常把自己学习Three.js的一些心得分享出来,共勉之!

    转载于:https://www.cnblogs.com/kmsfan/p/three_js_hello_world.html

    展开全文
  • 大地基准面适应某一区域的椭球体,球体中心不一定在地心 地图投影球面和平面映射关系的方法 待继续分析列表: 9、earth文件中都有哪些options((九)中问题) 10、如何根据earth文件options...

    目标:(二十九)中的问题83

    地球椭球体的中心为地心,形状为椭球体

    大地基准面是适应某一区域的椭球体,球体中心不一定在地心

    地图投影是球面和平面映射关系的方法

     

    Horizontal Datum

    A datum is a reference point (or set of points) against which geospatial measurements are made. The same location on earth can have different coordinates depending on which datum is in use. There are two classes of datum:

    A horizontal datum measures positions on the earth. Since the earth is not a perfect sphere or even a perfect ellipsoid, particular datums are usually designed to approximate the shape of the earth in a particular region. Common datums include WGS84 and NAD83 in North America, and ETR89 in Europe.

    Vertical Datum

    A vertical datum measures elevation. There are several classes of vertical datum; osgEarth supports geodetic (based on an ellipsoid) and geoid (based on a sample set of elevation points around the planet).

    osgEarth has the following vertical datums built in:

    • Geodetic - the default; osgEarth uses the Horizontal datum ellipsoid as a reference
    • EGM84 geoid
    • EGM96 geoid - commonly called MSL; used in DTED and KML
    • EGM2008 geoid

    By default, SRS’s in osgEarth use a geodetic vertical datum; i.e., altitude is measured as “height above ellipsoid (HAE)”.

     

    地理坐标系一般是指由经度、纬度和高度组成的坐标系,能够标示地球上的任何一个位置。前面提到了,不同地区可能会使用不同的参考椭球体,即使是使用相同的椭球体,也可能会为了让椭球体更好地吻合当地的大地水准面,而调整椭球体的方位,甚至大小。这就需要使用不同的大地测量系统(Geodetic datum)来标识。因此,对于地球上某一个位置来说,使用不同的测量系统,得到的坐标是不一样的。我们在处理地理数据时,必须先确认数据所用的测量系统。事实上,随着我们对地球形状测量的越来越精确,北美使用的 NAD83 基准和欧洲使用的 ETRS89 基准,与 WGS 84 基准是基本一致的,甚至我国的 CGCS2000 与WGS84之间的差异也是非常小的。但是差异非常小,不代表完全一致,以 NAD83 为例,因为它要保证北美地区的恒定,所以它与 WGS84 之间的差异在不断变化,对于美国大部分地区来说,每年有1-2cm的差异。

     

    rex支持的投影见

    osgEarth/SpatialReference.cpp
    SpatialReference*
    SpatialReference::create(const Key& key)
    {
        // now try to resolve the horizontal SRS:
        osg::ref_ptr<SpatialReference> srs;
    
        // shortcut for spherical-mercator:
        if (key.horizLower == "spherical-mercator" || 
            key.horizLower == "epsg:900913"        || 
            key.horizLower == "epsg:3785"          || 
            key.horizLower == "epsg:102113")
        {
            // note the use of nadgrids=@null (see http://proj.maptools.org/faq.html)
            srs = createFromPROJ4(
                "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +towgs84=0,0,0,0,0,0,0 +wktext +no_defs",
                "Spherical Mercator" );
        }
    
        // ellipsoidal ("world") mercator:
        else 
            if (key.horizLower == "world-mercator" ||
                key.horizLower == "epsg:54004"     ||
                key.horizLower == "epsg:9804"      ||
                key.horizLower == "epsg:3832"      ||
                key.horizLower == "epsg:102100"    ||
                key.horizLower == "esri:102100"    || 
                key.horizLower == "osgeo:41001" )
    
        {
            srs = createFromPROJ4(
                "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs",
                "World Mercator" );
        }
    
        // common WGS84:
        else
            if (key.horizLower == "epsg:4326" ||
                key.horizLower == "wgs84")
        {
            srs = createFromPROJ4(
                "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
                "WGS84" );
        }
    
        // WGS84 Plate Carre:
        else if (key.horizLower == "plate-carre")
        {
            srs = createFromPROJ4(
                "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
                "WGS84" );
    
            srs->_is_plate_carre = true;
            srs->_is_geographic  = false;
        }
    
        // custom srs for the unified cube
        else if (key.horizLower == "unified-cube" )
        {
            srs = createCube();
        }
    
        else if (key.horizLower.find( "+" ) == 0 )
        {
            srs = createFromPROJ4( key.horiz, key.horiz );
        }
        else if (key.horizLower.find( "epsg:" )  == 0 ||
                 key.horizLower.find( "osgeo:" ) == 0 )
        {
            srs = createFromPROJ4( std::string("+init=") + key.horizLower, key.horiz );
        }
        else if (key.horizLower.find( "projcs" ) == 0 || 
                 key.horizLower.find( "geogcs" ) == 0 )
        {
            srs = createFromWKT( key.horiz, key.horiz );
        }
        else
        {
            // Try to set it from the user input.  This will handle things like CRS:84
            // createFromUserInput will actually handle all valid inputs from GDAL, so we might be able to
            // simplify this function and just call createFromUserInput.
            srs = createFromUserInput( key.horiz, key.horiz );
        }
    
        // bail out if no SRS exists by this point
        if ( srs == 0L )
        {
            return 0L;
        }
    
        // next, resolve the vertical SRS:
        if ( !key.vert.empty() && !ciEquals(key.vert, "geodetic") )
        {
            srs->_vdatum = VerticalDatum::get( key.vert );
            if ( !srs->_vdatum.valid() )
            {
                OE_WARN << LC << "Failed to locate vertical datum \"" << key.vert << "\"" << std::endl;
            }
        }
    
        srs->_key = key;
    
        return srs.release();
    }

    这里spherical-mercator"、epsg:900913、epsg:3785、epsg:3875、epsg:102113都是一致的,

    3785.prj类似于web meator投影,为google map所采用的投影。

    EPSG:3857 is a Spherical Mercator projection coordinate system popularized by web services such as Google and later OpenStreetMap.

    history

        2007/08/06 - Christopher Schmidt of OpenLayers announces use of the number 900913 to describe the "Google Projection"
        2007/09/11 - Christopher Schmidt checks in OpenLayers/Layer/SphericalMercator.js with WKID 900913
        2003/06/25 (or earlier) - Google (or a user) begins using WKID 54004, either as EPSG:54004 or ESRI:54004
        2008/05/?? - EPSG updates mailing list that EPSG:3785 will be added to version 6.15
        2009/02/09 - EPSG changed EPSG:3785 to EPSG:3857
        2008/08/05 - Google Support thread on the use of Web Mercator in which it's noted (less technically) that the projection formerly used by Google Maps did not preserve azimuth at high latitudes.
         ?? - ESRI ArcGIS 10 changed the WKID for this projection from ESRI:102100 to EPSG:3857
        2010/09/15 - Noel Zinn from Hydrometrics gave a presentation at GIS in the Rockies on the mathematical uncertainty introduced by Web Mercator

     

     

    待继续分析列表:

    9、earth文件中都有哪些options((九)中问题)

    10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)

    11、rex地理信息引擎的四梁八柱((九)中问题)

    12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题)

    13、RexTerrainEngineNode中_mapFrame的作用((十二)中问题)

    14、地形变形(Terrain morphing)((十二)中问题)

    15、地球瓦片过期门限的含义((十二)中问题)

    16、高分辨率优先的含义((十二)中问题)

    17、OSGEARTH_DEBUG_NORMALS环境变量的作用((十二)中问题)

    18、活跃瓦片寄存器的作用((十二)中问题)

    19、资源释放器子节点的作用((十二)中问题)

    20、共享几何图形池子节点的作用((十二)中问题)

    21、分页瓦片加载器子节点的作用((十二)中问题)

    22、分页瓦片卸载器子节点的作用((十二)中问题)

    23、栅格化器子节点的作用((十二)中问题)

    24、地形子节点的作用((十二)中问题)

    25、绑定渲染器的作用((十二)中问题)

    26、地图回调函数的作用((十二)中问题)

    27、如何将地图图层添加到rex引擎中((十二)中问题)

    28、选择信息的作用((十二)中问题)

    29、瓦片包围盒修改回调函数的作用((十二)中问题)

    30、刷新rex引擎((十二)中问题)

    31、刷新边界作用((十二)中问题)

    32、osgEarth::Metrics类的意义((十四)中问题)

    33、请求合并队列_mergeQueue((十四)中问题)

    34、分页瓦片加载器在更新遍历时对请求处理过程((十四)中问题)

    35、分页瓦片加载器在更新遍历时对已处理请求裁剪过程((十四)中问题)

    36、已处理的请求队列_requests((十四)中问题)

    37、DatabasePager中的_fileRequestQueue和_httpRequestQueue((十六)中问题)

    38、瓦片请求的生成到处理过程详解((十六)中问题)

    39、瓦片节点TileNode的创建过程((十七)中问题)

    40、request请求加载瓦片优先级的含义((十七)中问题)

    41、request的_internalHandle的作用((十七)中问题)

    42、DatabaseRequest中_objectCache含义((十七)中问题)

    42、osgEarth的多线程分析((十七)中问题)

    43、osgEarth的缓存及其结构((十七)中问题)

    44、DatabaseThread从缓存加载数据过程((十七)中问题)

    45、DatabaseThread从文件加载数据过程((十七)中问题)

    46、决定创建TileNode的时机条件((十七)中问题)

    47、TerrainEngineNode的createTileModel过程详解((十七)中问题)

    48、DatabaseThread中CompileSet的含义((十七)中问题)

    48、PagerLoader的traverse过程详解((十七)中问题)

    49、DatabaseThread的run过程详解((十七)中问题)

    50、LoadTileData的invoke过程详解((十七)中问题)

    51、TileNode的cull过程详解((十七)中问题)

    52、遮罩生成器osgEarth::Drivers::RexTerrainEngine::MaskGenerator((十八)中问题)

    53、RexTerrainEngineNode::traverse过程详解((十八)中问题)

    54、TileNode节点下的场景树分析((十八)中问题)

    55、地形瓦片大小尺寸和LOD的关系((十八)中问题)

    56、TileNode的_tileKeyValue作用((十八)中问题)

    57、TileNode的_morphConstants作用((十八)中问题)

    58、TileNode的_stitchNormalMap作用((十八)中问题)

    59、TileNode的_renderModel作用((十八)中问题)

    60、初始化高程栅格过程详解((十八)中问题)

    61、LoadTileData中的CreateTileModelFilter作用((十八)中问题)

    62、TileNode节点何时会从场景树中移除((十八)中问题)

    63、osgEarth::Map的Profile创建过程((二十)中问题)

    64、osgEarth::TerrainTileModelFactory添加颜色层和影像层的区别((二十一)中问题)

    65、osgEarth::PatchLayer修补层的作用((二十一)中问题)

    66、osgEarth::TerrainLayer中的_memCache(osgEarth::MemCache)详解((二十一)中问题)

    67、osgEarth::Layer::RenderType图层渲染类型的作用((二十一)中问题)

    68、osgEarth::TerrainLayer中TileSource的作用((二十一)中问题)

    69、earth文件没有设置高程图层会不会有默认高程层(高程均为0)((二十一)中问题)

    70、TerrainTileModelFactory::addColorLayers过程详解((二十一)中问题)

    71、TerrainTileModelFactory::addElevation过程详解((二十一)中问题)

    72、osgearth中可能用到的几个全局实例对象(osgDB::Registry osgEarth::Registry osg::Timer osg::DisplaySetting)((二十三)中问题)

    73、osgEarth::Map::addLayer过程详解((二十三)中问题)

    74、TileNode::setDirty过程详解((二十三)中问题)

    75、请求四个状态的含义(IDLE RUNNING MERGING FINISHED)((二十三)中问题)

    76、什么时候删除TileNode节点,不会一直增加吧((二十三)中问题)

    77、寄存器中请求状态活动记录的含义Registry::instance()->endActivity( req->getName() )((二十三)中问题)

    78、瓦片TileNode的生命周期流程详解((二十三)中问题)

    79、rex引擎如何将瓦片构造成地球形状((二十五)中问题)

    80、高程、影像文件格式详解((二十五)中问题)

    81、TileNode的merge过程详解((二十六)中问题)

    82、osgEarth支持的空间参考坐标系详解(osgEarth::SpatialReference、osgEarth::CubeSpatialReference、osgEarth::TangentPlaneSpatialReference)((二十九)中问题)

    83、osgEarth地球椭球体ellipsoid 大地基准面datum 地图投影Projection详解((二十九)中问题)

    84、空间参考坐标系和坐标系统类型的关系(geocentric projected)((二十九)中问题)

    85、proj4是什么((二十九)中问题)

    86、为什么要删除设置过的垂直水准面((二十九)中问题)

    87、osgEarth如何对投影坐标系和大地坐标系进行显示处理的((二十九)中问题)

    88、TileNode的节点构成,一个surface、tilenode((三十)中问题)

    89、MapFram和MapInfo的关系((三十)中问题)

    90、ModifyBoundingBoxCallback的使用时机和场合((三十)中问题)

    91、MapFrame为什么要单独存放高程层_elevationLayers,而不是放在图层_layers中((三十)中问题)

    92、MapFrame和Map中高程池的作用osg::ref_ptr<ElevationPool> _elevationPool((三十)中问题)

    93、osgEarth::Drivers::RexTerrainEngine::TileDrawable分析((三十)中问题)

    94、请求读取地理信息失败会如何处理((三十二)中问题)

    95、RexTerrainEngineNode的遍历过程详解((三十三)中问题)

    96、osgEarth::Drivers::RexTerrainEngine::TerrainCuller的apply过程详解((三十三)中问题)

    97、RexTerrainEngineNode的updateState过程详解 设置了很多着色器变量((三十三)中问题)

    98、什么时候分配opengl资源((三十三)中问题)

    99、TileNode释放opengl资源过程releaseGLObjects详解((三十三)中问题)

    100、最近一次遍历的帧号和时间是怎么设置呢(在渲染遍历里),怎么就不会再渲染遍历该瓦片节点了((三十三)中问题)

    101、osg::State和osg::StateSet的关系((三十四)中问题)

    展开全文
  • 由于地球一个赤道略宽两极略扁的不规则的梨形球体,故其表面一个不可展平的曲面,所以运用任何数学方法进行这种转换都会产生误差和变形,为按照不同的需求缩小误差,就产生了各种投影方式2.地图投影的分类地图...

    1.地图投影定义

    地图投影是利用一定数学法则把地球表面的经、纬线转换到平面上的理论和方法。

    由于地球是一个赤道略宽两极略扁的不规则的梨形球体,故其表面是一个不可展平的曲面,所以运用任何数学方法进行这种转换都会产生误差和变形,为按照不同的需求缩小误差,就产生了各种投影方式

    c3924f1fa7caf647539733526d7056f4.png

    2.地图投影的分类

    地图投影的几何概念是,先将参考椭球面上的点投影到投影面上,再将投影面沿母线切开展开为平面。从本质上来讲,地图投影就是按一定的条件确定大地坐标和平面直角坐标系之间的一一对应关系。

    按照所选择投影面的类型,地图投影可相应分为圆柱投影、圆锥投影和方位投影。

    (1)圆柱投影是将一个圆柱面包围椭球体,并使之相切或相割,再根据某种条件将椭球面上的经纬网点投影到圆柱面上,然后,沿圆柱面的一条母线切开,将其展成平面而得到的投影。其中正轴圆柱投影的圆柱轴同地轴重合,横轴圆柱投影的圆柱轴同赤道直径重合,斜轴圆柱投影的圆柱轴同地轴和赤道直径以外的任一直径重合

    9342eeb9e61b26346462f84adb3bcb09.png

    (2)圆锥投影

    8183b8597623b13275a9ce5cab9da363.png

    圆锥投影是假定以圆锥面作为投影面,使圆锥面与地球相切或相割,将球面上的经纬线投影到圆锥面上,然后把圆锥面沿一条母线剪开展为平面而成。当圆锥面与地球相切时,称为切圆锥投影;当圆锥面与地球相割时,称为割圆锥投影。

    按圆锥与地球相对位置的不同,也有正轴、横轴和斜轴圆锥投影。但横轴和斜轴圆锥投影实际上很少应用,所以凡在地图上注明是圆锥投影的,一般都是正轴圆锥投影。

    正轴切圆锥投影示意图,视点在地球中心,纬线投影在圆锥面上仍为圆,不同的纬线投影为不同的圆,这些圆都互相平行,经线投影为相交于圆锥顶点的一束直线。如果将圆锥沿一条母线剪开展为平面,则成扇形,其顶角小于360°,在平面上纬线不再是圆,而是以圆锥顶点为圆心的同心圆弧,经线成为由圆锥顶点向外放射的直线束,经线间的夹角与相应的经度差成正比。

    设球面上两条经线间的夹角为λ,其投影在平面上为δ,δ与λ成正比,即δ=Cλ(C为常数)。纬线投影为同心圆弧,设其半径为ρ,它随纬度的变化而变化,即ρ是纬度j的函数,ρ=f(j)。所以圆锥投影的平面极坐标一般公式为:

    如以圆锥顶点S’为原点,中央经线为X轴,通过S’点垂直于X轴的直线为Y轴,则圆锥投影的直角坐标公式为:

    x=-rcosd

    y=rsind

    通常在绘制圆锥投影时,以制图区域最南边的纬jS与中央经线的交点为坐标原点,则其直角坐标公式为:

    x=rS-rcosd

    y=rsind

    式中rS为投影区域最南边纬线jS的投影半径。

    可知,圆锥投影需要决定ρ的函数形式,由于P的函数形式不同,圆锥投影有很多种。c称为圆锥系数(圆锥常数),它与圆锥的切、割位置等条件有关,对于不同的圆锥投影,它是不同的。但对于某一个具体的圆锥投影,C值是固定的。总的来说,C值小于1,大于0,即0

    (3)方位投影

    方向角(direction angle)又称天顶投影。方位投影使一个平面与地球仪相切或相割,以这个平面做投影面,将地球仪上的经纬线投影到平面上,形成投影网。即以平面为投影面的一类投影。投影平面与地球仪相切或相割的切点在赤道的称横方位,切点在极点的称正方位,切点在任意点的称斜方位。按照变形的性质又可分为等角方位投影、等距方位投影、等积方位投影。

    以一特定方向起始按顺时针所量得某方向线的水平角。地图投影中,一般以某一主方向为起始方向。

    按投影面与地球的相对位置分为正轴、横轴、斜轴方位投影以及切方位投影与割方位投影。在正轴投影中,纬线投影为同心圆,经线为同心圆半径,两经线间的夹角与实地经度差相等。对于横轴或斜轴方位投影,等高圈投影为同心圆,垂直圈投影为同心圆半径,两垂直圈间的交角与实地方位角相等。除横轴投影的赤道与中央经线和斜轴投影的中央经线是直线外,其余经纬线均为对称于中央经线的曲线。等变形线为同心圆,正轴时与纬圈一致,横轴或斜轴时与等高圈一致。该投影适宜于具有圆形轮廓的地区。在两极地区,适宜用正轴投影,赤道附近地区,适宜用横轴投影,其它地区用斜轴投影。

    a1553fbd4e94eaa4bc5ce3659a275a49.png
    展开全文
  •  阀门定位器的精度在理想工况下,对应某一输入信号,调节阀的内件(TrimParts,包括球体/阀芯、阀杆、阀座等)每次都应准确地定位在所要求的位置,而不管行程的方向或者调节阀的内件承受多大的负载。  2.阀门定位器...
  • 曾几何时,轨迹球也鼠标的热门规划方案之一,但因为在性能上难以有提升空间,再加上游戏鼠标慢慢成为市场绝对看点,所以后来微软等品牌渐渐退出,就只剩罗技一家在做,而且距离上一代... 以球体滚动代替鼠标滑动...
  • 映入眼帘的一个晶莹的球体,上面蓝色和白色的纹痕相互交错,周围裹着一层薄薄的水蓝色“纱衣”。多少(打比方) 地球,这位人类的母亲,这个生命的摇篮,那样的美。语文句子有十种说明方法。常见的多少钱有:举...
  • 原帖 AABB盒-球体之间的碰撞检测 问题描述:给定一个AABB盒子,以及一个以速度v前进的...首先看一下球体和盒碰撞发生时球的圆形会出现在哪些区域如图: 如图黑色部分代表的原始的AABB盒子红色部分代表的被Expa
  • 以下命令提供对参与命令计算的对象和非相关对象进行图形上的区别,便于用户识别哪些是当前被操作的对象,哪些不是。 六面体、圆柱体、圆锥体、球体、椭球体、拉伸、旋转、扫掠、放样、孔、螺纹、唇缘、坯料、抽壳、...
  • Scene场景的组件包括三种 相机:决定哪些东西将要显示在屏幕上渲染 ...物体(Mesh对象):它们在相机视图里主要的渲染对象:方块、球体等 Scene就是这些对象的容器。(Mesh对象)区别相机和光...
  • 2.卫星无摄运动、有摄运动什么,其中描述无摄卫星轨道的开普勒轨道参数有哪些? 卫星无摄运动卫星在轨运动受到中心力和摄动力的影响。假设地球为匀质 球体,其对卫星的引力称为中心力(质量集中于球体的中心)。中心...
  • translate与rotate

    2020-12-21 16:09:30
    理想情况球体旋转,效果如下图 但是由于顺序写错了,效果实现如下: 看下代码有哪些地方不同 正确的应该先translate后rotate 因为rotate旋转的时候会旋转坐标轴,之后再进行translate会依据新的坐标轴。 ...
  • Scene场景的组件包括三种相机:决定哪些东西将要显示在屏幕上渲染光源:它们对材质如何显示,以及生产阴影材质如何产生影响物体(Mesh对象):它们在相机视图里主要的渲染对象:方块、球体等Scene就是这些对象的...
  • 大家都知道球阀的分类有很多种...我们接下来继续看,蝶阀和球阀还有哪些区别.卫生级蝶阀 来自温州科达阀门区别一球阀和蝶阀的截止方式不同:球阀通过球体堵住通道来实现管道截止流通;蝶阀靠的蝶翼,铺展开封死管...
  • OpenGL.ES在Android上的简单实践:15-全景(视野变换)   本篇文章只有一个内容,就是模仿Insta360的视野变换效果,实现我们全景球的...从动图中看到,其实这几个视野(特别小行星)都基于一个球体的表面所...
  • 1.一个场景至少需要的三种类型组件 相机/决定哪些东西将在屏幕上渲染 光源/他们会对材质如何显示,以及生成阴影时材质如何使用产生影响 物体/他们在相机透视图里主要的渲染队形:方块、球体等 2.浏览器兼容 ...
  • 在《地图投影为什么》一文,我大略说了下为什么需要地图投影,投影坐标系需要哪些参数,这些参数(如椭球体、基准等)做什么的。这篇就深入的谈些地图投影相关的一些概念,各种定义参考OGC标准《Spatial Reference...
  • 别踩白块(u3d)

    千次阅读 2015-04-05 09:18:17
    在做之前,先想好需要哪些界面。需要一个开始界面和一个游戏界面。由于刚开始,先做的游戏界面。截图如下: 用了一个面板做天空北京,一个球体做地面,摄像机角度调整好,有那么一点3D的感觉。将整个游戏场景放在...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    要想查询系统提供哪些Shell,可以使用chsh -l 命令,见图1所示。 图1 系统可以使用的Shell类型 从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

哪些是球体