地理系统里面,计算用到的数值跨度非常大时,是不是有一套特殊的坐标转化系统来处理数值问题的?(比如太空模拟这类) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acros

地理系统里面,计算用到的数值跨度非常大时,是不是有一套特殊的坐标转化系统来处理数值问题的?(比如太空模拟这类)

  •  
  •   acros 2015 年 11 月 13 日 9102 次点击
    这是一个创建于 3816 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做一个和地理相关的程序,有两种视角:地图视角和第一人称视角。
    目前在大地图上都是记录经纬度坐标,比如[120.123456,21.1233456],类似现在的地图 APP 上标志。
    转到第一人称下时,所有物品坐标都以当前视角为原点,依据其经纬度重新计算位置,这个目前也没有问题,隐约觉得哪里没考虑周全。

    看了下一个叫 SpaceEngine 的免费游戏(真不是广告,这个游戏是完全免费的,不开源),玩家可以在宇宙中穿梭,又可以下潜到一个星球表面,这个坐标数值跨度得有 10 的几十次方了吧,然而进出太空还是挺平滑的。像这种程序,如果要求玩家可以降落到星球表面(整个世界完全是 1 : 1 的),人物在表面走路移动的逻辑又要怎么实现呢?因为靠太空坐标系这种精度肯定是完全没法做到细微移动的。或者在一个空间中,随机取一个点作为原点,建立局部坐标系?

    再换个例子,像洲际导弹,军事 GPS 定位精确到米以下的。导弹飞行范围有半个地球, GPS 是整个地球,在三维空间坐标系统下面,这个空间原点怎么取呢?以地球中心为原点吗?如果这样取按目前 C 语言内置 double 类型应该不够处理(要做区域划分?)。

    唔,现在思考的还比较粗略,表达也挺模糊,周末再仔细斟酌下...
    另外...有哪些讨论涉及系统设计的文章或开源软件吗? 有个前人的思路就好,我怕摸黑走到坑里去

    14 条回复    2015-11-14 22:35:27 +08:00
    xiaofami
        1
    xiaofami  
       2015 年 11 月 13 日 via Android   1
    learnshare
        2
    learnshare  
       2015 年 11 月 13 日   1
    https://zh.wikipedia.org/wiki/%E5%A4%A9%E7%90%83%E5%9D%90%E6%A0%87%E7%B3%BB%E7%BB%9F 天球坐标系统

    比较常见的是类似地球经纬度的方式,以地心为参考点,以赤道或黄道面为参考平面,以地球南北极方向为参考轴。
    learnshare
        3
    learnshare  
       2015 年 11 月 13 日
    @learnshare 比如在赤道坐标系统里,经度、纬度和距离(类似于地球坐标的海拔),就可以定位一个点
    hitmanx
        4
    hitmanx  
       2015 年 11 月 13 日
    你这业务真广啊。。
    loading
        5
    loading  
       2015 年 11 月 13 日 via Android
    洲际导弹…似乎确实很难算!以前以为只要燃料够就行了,目前看来,就算美国开放随便我写程序,我也打不中!
    ioth
        6
    ioth  
       2015 年 11 月 13 日
    gps 只可能给美军自己用。
    gis 和 gps 是 3s 里面的不同东西。
    太空又不是 3s 的内容了。
    seki
        7
    seki  
       2015 年 11 月 13 日   1
    一楼说的是大地坐标系
    仅对于地球表面而言,根据你的项目需要,可以选择等角投影、等距投影,等面积投影等。处理这类坐标转换可以用 gdal ,并且这些投影的相关信息也能够在网上查到
    一楼所说的 beijing 54 和 xian 80 都属于 Gauss Kruger 投影,是一种等角投影。两者的区别在于 datum 定义参数的不同
    acros
        8
    acros  
    OP
       2015 年 11 月 13 日
    @hitmanx
    @loading
    @ioth
    @seki
    我就发散好好奇下他们的系统里面怎么处理极大极小值变化的 不要以为我在做导弹啊!
    cdxem713
        9
    cdxem713  
       2015 年 11 月 13 日 via iPhone
    在地球上用经纬度貌似也没啥问题啊,还有会用莫卡托坐标系,是米制的,做导弹啥的应该会换算成这个坐标。
    飞宇宙上就不知道了,猜想是在宇宙中用通知坐标系,在每个星球用各自的坐标系?
    msg7086
        10
    msg7086  
       2015 年 11 月 14 日
    @acros 难道不是在做宇宙飞船的 GPS ?
    Robling
        11
    Robling  
       2015 年 11 月 14 日
    浮点数解决不了的精度问题可以用定点数解决。
    acros
        12
    acros  
    OP
       2015 年 11 月 14 日
    @Robling 软件实现吗?
    硬件支持的我真没遇见过。
    acros
        13
    acros  
    OP
       2015 年 11 月 14 日 via iPhone
    @msg7086 神舟的 gps 给我做的话,估计得拉上整个外交部帮忙擦屁股。
    c742435
        14
    c742435  
       2015 年 11 月 14 日
    @acros 我不认为一个停在星球表面的飞船需要具有宇宙的绝对坐标系。
    关于     帮助文档     自助推广系统     博客     API     FAQ &nsp;   Solana     2783 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 123ms UTC 13:04 PVG 21:04 LAX 06:04 JFK 09:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86