首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在等距六边形平铺引擎中转换屏幕到地图坐标?

在等距六边形平铺引擎中,将屏幕坐标转换为地图坐标是一个常见的任务。以下是一个简单的算法,用于实现这一转换:

  1. 首先,将屏幕坐标转换为地图坐标的关键是确定屏幕坐标所在的六边形单元格。这可以通过计算屏幕坐标与每个六边形单元格的中心点之间的距离来实现。
  2. 计算每个六边形单元格的中心点坐标。这可以通过以下公式实现:
代码语言:txt
复制

x = (column sqrt(3) cell_size) + (row % 2 == 0 ? 0 : cell_size * sqrt(3) / 2)

y = row 3 cell_size / 2

代码语言:txt
复制

其中,columnrow 分别表示六边形单元格的列和行,cell_size 表示每个六边形单元格的边长。

  1. 计算屏幕坐标与每个六边形单元格中心点的距离。这可以通过以下公式实现:
代码语言:txt
复制

distance = sqrt((x - screen_x)^2 + (y - screen_y)^2)

代码语言:txt
复制

其中,screen_xscreen_y 分别表示屏幕坐标的横坐标和纵坐标。

  1. 找到与屏幕坐标最接近的六边形单元格。这可以通过比较每个六边形单元格与屏幕坐标之间的距离来实现。
  2. 最后,将找到的六边形单元格的行和列作为地图坐标返回。

需要注意的是,这个算法只能用于等距六边形平铺引擎中,并且需要根据实际情况进行调整。例如,如果地图坐标系是左上角为原点,而屏幕坐标系是左下角为原点,则需要进行相应的坐标系转换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

六边形网格化(Hexagonal Grids)原理与实现

路径规划、游戏设计栅格法应用,正六边形网格不如矩形网格直接和常见,但是正六边形具有自身的应用特点,更适用于一些特殊场景,比如旷阔的海洋、区域或者太空。...当这个算法要和其他坐标系交互时,我会把其他坐标转换为cube坐标系,然后计算结束后转换为其他坐标系。   Axial coordinates:该坐标系是由cube坐标系中三个轴的两个组成的。...因为cube坐标系有x+y+z=0的限制,所以第三个轴是多余的。Axial coordinates主要应用于地图存储和对用户的显示。...Cube coordinates:六边形上移动一个网格,涉及改变cube坐标两个轴,一个+1,另一个-1,所以共有六种可能性,每一种可能性对应于六边形的一个方向。 ?   ...Distance: cube坐标,每一个六边形是一个cube里面的3d空间。六边形相邻的六边形距离是1,但是cube grid里面距离是2,这会让距离求解变得简单和快速。

4.1K50

iOS多边形马赛克的实现(上)

手指在屏幕上移动的时候,我们可以通过UIResponder的touch事件回调获得手指移动路径上的点,但这些点在各个机型上的回调间隔并不相同。较差的机型上,如果手指移动过快,获取到的点是十分稀疏的。...前面提到的进行路径点补全时不用逐个像素补全,p图里我们选用圆形笔触直径*0.15来作为间隔(参数调节笔触边缘不产生锯齿即可)。...为了考虑算法的通用性,以便于用独立素材的模式实现各种图案的平铺。我把过程拆解为以下几个步骤 找到最小重复单元 比如六边形的最小平铺单元是六边形本身,而直角三角形的最小重复单元是一个正方形。...设置横向、纵向间距 最小重复单元的间距定义了该素材的平铺规则。考虑平铺单元本身会缩放以实现不同大小的马赛克,这里间距的参数需定义为一个以最小重复单元实际宽高为基准的相对值。...比如六边形平铺可以用两个紧邻的六边形组成一个单元来定义,就不用考虑奇数行/偶数行对整体排列造成的影响。

4K110

基于图优化的多相机手眼标定框架

而变换为: • :表示末端执行器在世界参考坐标的位姿的等距变换; • :表示棋盘格末端执行器参考坐标的位姿的等距变换; • :表示棋盘格摄像头参考坐标的位姿的等距变换; • :表示摄像头在世界参考坐标的位姿的等距变换...图3显示了基于图的基之眼标定的结构。使用[8]的符号表示:圆圈表示需要估计的状态变量,而六边形表示固定参数,如和1..,分别表示相机矩阵和棋盘格的角点在它们的参考坐标的表示。...考虑工作区域中有个摄像头,如图1所示,需要引入一些更多的符号表示: • :表示第个摄像头第个摄像头参考坐标的位姿的等距变换; • :表示棋盘格第个摄像头参考坐标的位姿的等距变换; •...:表示第个摄像头在世界参考坐标的位姿的等距变换。...我们的方法能够正确标定设置的所有摄像头,甚至具有挑战性的光照条件下,例如摄像头#1和#3(参见图7)。大多数经过测试的方法无法收敛低的重新投影误差解,而我们的方法提供了明显更低的误差。

25910

Google Earth Engine(GEE)——使用 GeoPandas 和 Uber 的 H3 空间索引进行快速多边形点分析

在这篇文章,我想谈谈另一个名为H3 的空间索引系统。 这个开源索引系统由 Uber 创建,使用六边形网格单元。该系统类似于另一个名为S2 的基于单元格的索引系统——它是谷歌开发的。...这两个系统都提供了一种将地球上的坐标转换cell id为以特定分辨率映射到六边形或矩形网格单元的方法。...这是原始点图层 QGIS 的可视化效果。 我们将通过 H3 提供的六边形网格上聚合事件点来创建密度图。我们从导入库开始。...要将结果可视化或将其导出到 GIS,我们需要将 H3 单元 ID 转换为几何图形。该 h3_to_geo_boundary 函数采用 H3 键并返回形成六边形单元格的坐标列表。...这是显示生成的 hexbin 地图的图层,其中显示了世界各地的盗版热点。 从读取输入创建聚合网格层的整个过程只需 2 秒多一点。将其与使用空间索引的 QGIS 模型进行比较,该模型至少需要 5 倍。

21110

图数据 3D 可视化 Explorer 的应用

然而,2D 场景并不一定适用所有场景,主要有以下原因:空间信息展示部分数据具有原生的空间坐标信息,且这部分信息也不可降维,如分子结构、经纬度的球坐标展示、具有层级高度的数据等。...大数据量布局展示较大的数据集情况下,由于 2D 没有深度,导致所有的数据需要被平铺在画布上,可以想象一个西瓜的所有西瓜籽平铺的情况,占地面积要远远大于西瓜本身。...可以看到下图同样的复杂网络关系,3D 显示则会有较为明确的关系展示。...通过屏幕内的整体颜色分布,能大致看出来整个可视化图中的节点 Tag 占比。身临其境的体验感 图片 用户可以再整个空间内搜索节点,直接定位对应节点上,查看相关连的其余节点数据。...时序及 GIS 领域的图布局映射图数据坐标渲染增加边的相关交互行为 原文链接:https://www.nebula-graph.com.cn/posts/dag-controller

68530

靠数学“拿了”两次诺贝尔奖,彭罗斯从“铺地砖”帮忙发现2011年化学奖的秘密

今年,彭罗斯凭借数学广义相对论和黑洞研究的应用,获得了诺贝尔物理学奖。 而在几十年前,彭罗斯的另一项数学发现曾帮助别人获得过诺贝尔奖。...铺地砖 彭罗斯地砖的设计最早可以追溯半个世纪前。 看看你脚下的地砖,它是不是简单而又重复。数学家们却想把问题搞得复杂一点。 如何设计一款地砖铺满平面,这是个看似非常简单的问题。...比如像下面这种由2种菱形铺满的情况: 无论是这种平铺,还是前面用正多边形平铺,它们都有一个共同的特点:具有周期性。 所谓周期性,是指把转换朝着某个方向平移一段距离后,能够和自身重合。...换句话说,他认为铺满屏幕的方案只能是周期性的。 而他的学生Robert Berger却证明了,实际上是不存在这种算法的。他指出,某些情况下,只有图灵机不停止时,才能将王氏砖铺满平面。...过去,科学家们认为,晶体也只有像三角形、正方形、六边形等几种平铺方式。我们每天吃的食盐,它的晶体结构是立方体。

74610

原 HTML5 网络拓扑图整合 OpenL

地图结合应用的关键技术点,该文介绍的结合的原理,其实还可推广与ArcGIS、百度地图以及GoogleMap等众多GIS地图引擎融合的解决方案。...HT和OpenLayers组件叠加在一起之后,剩下就是拓扑里面图元的摆放位置与经纬度结合的问题,常规网络拓扑图中存储ht.Node图元的position是逻辑位置,和经纬度没有任何关系,因此GIS应用我们需要根据图元的经纬度信息换算出...position的屏幕逻辑坐标信息,如果你知道投影算法也可以自己提供函数处理,但所有GIS组件都提供了类似的API函数供调用,当然这部分也没有标准化,不同的GIS组件需要调用的API都有差异,但基本原理是一致的...,对于OpenLayers我们通过map.getPixelFromLonLat(data.lonLat)可以将经纬度信息转换屏幕像素逻辑坐标,也就是ht.Node需要的position坐标信息。...细心的同学会想到转换是双向的,有可能用户需要拖动图元节点改变其经纬度信息,这时候我们就需要另外一个方向函数,即根据屏幕逻辑坐标转换成当前坐标对应的经纬度,OpenLayers我们通过map.getLonLatFromPixel

1.8K60

unity3d-UGUI

Graphical User Interface) Unity4.6版本之后引入的界面显示系统 Unity公司自己研发的一套界面显示系统 UGUI和OnGUI、NGUI的区别 uGUI的Canavas有世界坐标屏幕坐标...Pixel Perfect 完美像素:若勾选,则会锐化屏幕显示效果。 Sort Order 渲染顺序:多个Canvas,值越大越渲染最上层。...World Space 世界空间坐标模式:画布渲染于世界空间,与场景其他3D物体性质相同。...Preserve Aspect :保持贴图原始比例 Set Native Size :将贴图设置为原始比例 Sliced 切割 Fill Center :填充中部区域,如果取消中部区域为透明 Tiled 平铺...应用 使用Raw Image 制作小地图 制作一个小地图 将相机放置地图的正上方,可以设置Culling Mask(遮挡剔除) 创建一张Render Texture,将Target Texture属性指向这张纹理

2.8K30

HT for Web整合OpenLayers实现GIS地图应用

地图结合应用的关键技术点,该文介绍的结合的原理,其实还可推广与ArcGIS、百度地图以及GoogleMap等众多GIS地图引擎融合的解决方案。...HT和OpenLayers组件叠加在一起之后,剩下就是拓扑里面图元的摆放位置与经纬度结合的问题,常规网络拓扑图中存储ht.Node图元的position是逻辑位置,和经纬度没有任何关系,因此GIS应用我们需要根据图元的经纬度信息换算出...position的屏幕逻辑坐标信息,如果你知道投影算法也可以自己提供函数处理,但所有GIS组件都提供了类似的API函数供调用,当然这部分也没有标准化,不同的GIS组件需要调用的API都有差异,但基本原理是一致的...,对于OpenLayers我们通过map.getPixelFromLonLat(data.lonLat)可以将经纬度信息转换屏幕像素逻辑坐标,也就是ht.Node需要的position坐标信息。...细心的同学会想到转换是双向的,有可能用户需要拖动图元节点改变其经纬度信息,这时候我们就需要另外一个方向函数,即根据屏幕逻辑坐标转换成当前坐标对应的经纬度,OpenLayers我们通过map.getLonLatFromPixel

1.8K80

52个数据可视化图表鉴赏

因为计算机系统从低级语言高级语言,涉及的东西非常复杂,仅凭一个人的力量不可能完全掌握,无法面面俱。程序开发,需要的所有东西不可能一个人做出来。...24.六边形平铺地图 六边形平铺地图是一种使用六边形表示地理区域的图,以防止具有较大地理区域产生偏移。 25.直方图 直方图是显示分布形状的图表。...直方图看起来像条形图,但将连续度量值分组范围或数据桶。 26.地平线图 地平线图是一种功能强大的工具,用于一个类别内的多个项目之间比较一段时间内的数据。...37.圆型条形图 圆型条形图只是坐标系上绘制的条形图,而不是笛卡尔坐标系上绘制的条形图。虽然看起来很酷,但圆型条形图的问题是条形长度可能会被误解。...用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点。值由点在图表的位置表示。类别由图表的不同标记表示。

5.7K21

HT for Web整合OpenLayers实现GIS地图应用

地图结合应用的关键技术点,该文介绍的结合的原理,其实还可推广与ArcGIS、百度地图以及GoogleMap等众多GIS地图引擎融合的解决方案。...HT和OpenLayers组件叠加在一起之后,剩下就是拓扑里面图元的摆放位置与经纬度结合的问题,常规网络拓扑图中存储ht.Node图元的position是逻辑位置,和经纬度没有任何关系,因此GIS应用我们需要根据图元的经纬度信息换算出...position的屏幕逻辑坐标信息,如果你知道投影算法也可以自己提供函数处理,但所有GIS组件都提供了类似的API函数供调用,当然这部分也没有标准化,不同的GIS组件需要调用的API都有差异,但基本原理是一致的...,对于OpenLayers我们通过map.getPixelFromLonLat(data.lonLat)可以将经纬度信息转换屏幕像素逻辑坐标,也就是ht.Node需要的position坐标信息。...细心的同学会想到转换是双向的,有可能用户需要拖动图元节点改变其经纬度信息,这时候我们就需要另外一个方向函数,即根据屏幕逻辑坐标转换成当前坐标对应的经纬度,OpenLayers我们通过map.getLonLatFromPixel

1.6K11

不规则图形背景排版高阶技巧 -- 酷炫的六边形网格背景图

因此,在这个需求,我们可能不得不退而求其次,一个六边形实现使用一个标签完成。 那么,就拿 1 个 DIV 来说,我们有多少实现六边形的方式呢?...也就是效果可能在屏幕非常宽的情况下,失效。... CSS ,有一个神奇的元素能够让元素以非直线形式排布。它就是 shape-outside!...(80px, 80px) 坐标处,生成一个 80px 半径的圆。...我们可以让整个容器更宽一点,譬如宽度为父元素的 120%,然后水平居中,这样,两侧的留白就解决了 让两行直接贴紧,可以设置一个 margin-bottom 做完这两点优化之后,效果如下: 可以做到任意屏幕宽度下的六边形完美平铺布局

83010

高效的多维空间点索引算法 — Geohash 和 Google S2

六边形个数越多越好,粒度越细,就越贴近球体。 Uber 一个公开分享上提到了他们用的是六边形的网格,把城市划分为很多六边形。这块应该是他们自己开发的。...这样第一步的球面坐标进一步的被转换成 f(x,y,z) -> g(face,u,v),face是正方形的六个面,u,v对应的是六个面的一个面上的x,y坐标。 3....ToPointRaw 是某种目的下,把 Cell ID 转换为非单位向量所需的毫秒数。 S2 默认的转换是二次转换。...目前总共转换了4步,球面经纬度坐标转换成球面xyz坐标,再转换成外切正方体投影面上的坐标,最后变换成修正后的坐标。 到目前为止,S2 可以优化的点有两处,一是投影的形状能否换成六边形?...点与坐标轴点相互转换 S2 算法,默认划分 Cell 的等级是30,也就是说把一个正方形划分为 2^30 * 2^30个小的正方形。

2.4K50

高效的多维空间点索引算法 — Geohash 和 Google S2

球面上的一个点,直角坐标,可以这样表示: ?...上表,ToPoint 和 FromPoint 分别是把单位向量转换到 Cell ID 所需要的毫秒数、把 Cell ID 转换回单位向量所需的毫秒数(Cell ID 就是投影正方体六个面,某个面上矩形的...ToPointRaw 是某种目的下,把 Cell ID 转换为非单位向量所需的毫秒数。 S2 默认的转换是二次转换。...目前总共转换了4步,球面经纬度坐标转换成球面xyz坐标,再转换成外切正方体投影面上的坐标,最后变换成修正后的坐标。 到目前为止,S2 可以优化的点有两处,一是投影的形状能否换成六边形?...点与坐标轴点相互转换 S2 算法,默认划分 Cell 的等级是30,也就是说把一个正方形划分为 2^30 * 2^30个小的正方形。

3.3K60

地图基础

坐标系一般有两种坐标系,地图坐标系(geographic coordinate system)和投影坐标系(projected coordinate system)地理坐标系地理坐标系一般是指由经度、纬度和高度组成的坐标系...)下方左图表示地球球面上大小相同的圆形;右上为墨卡托投影,投影后仍然是圆形,但是高纬度时物体被严重放大了,也就无法显示极地地区;右下为等距投影,物体的大小变化不明显,但是图像被拉长了图片等距投影投影上有扭曲...,所以并不适合航海地图,但是因为坐标与像素之间的对应关系十分简单,比较适合gis软件用于栅格图的展示EPSG在国际上,每个坐标系统都会被分配一个EPSG代码EPSG: 4326EPSG: 4326是WPGS...84的代码WGS 84是目前最流行的地理坐标系统GPS是基于WGS 84的一般存储数据时,按照WGS 84存储EPSG: 3857伪墨卡投影,也被称为球体墨卡托,web mercator基于墨卡托投影...,把WGS 84坐标系投影正方形,切掉了南北极附近地区由于墨卡托投影等正形性的特点,不同层级的图层上物体的形状保持不变,一个正方形可以不断地被划分为更多更小的正方形以显示更清晰的细节伪墨卡托坐标系非常适合显示数据

1.3K40

ARKit和CoreLocation:第一部分

ARFrame:** ARFrame**包含视频帧数据和位置跟踪数据,这些数据将传递currentFrame属性的ARSession。...image.png worldAlignment - Apple Docs 创建AR体验取决于能够构建用于将对象放置虚拟3D世界坐标系,该虚拟3D世界映射到设备的真实位置和运动。...定义 SCNSphere:一个球体定义一个表面,其每个点与其中心等距离,该中心位于其局部坐标空间的原点。您可以使用其 radius 属性在所有三个维度定义球体的大小。...这些包括: 旋转(改变方向) 缩放(大小更改) 翻译(移动位置) 转换 大多数情况下,转换点可以用以下等式表示: Transformed Point = Transformation Matrix ×...MKRoute对象定义路线的几何形状 - 即,它包含与特定地图坐标相关联的线段。路线对象还可以包括其他信息,例如路线的名称,距离和预期的行驶时间。

2.2K20

明白了这些术语,才算懂个“球”

有了X轴和Z轴,Y轴基本就确定了,只差一个方向,地图学里用右手坐标系,就是我图上画的那种X/Y/Z的位置关系。 大地坐标系 地理还学过一种经纬度表示坐标的方法,GIS称为大地坐标系。...投影 前面介绍了几种椭球体和相应的坐标系,想准确直观地表示地球上某点的位置,应该用地球仪来展示。但携带地球仪太不方便,也没办法打印出来挂在墙上,也不能显示计算机屏幕上。...墨卡托投影 最容易想到的一种投影方法是把经线和纬线都扯直,平铺在一个平面上,当然这种描述方法太不严谨。荷兰地图学家墨卡托(Mercator)1569年就提出了这种方法。...油田行业坐标一直都采用北京54标准,数据库的井位等坐标一直都是六度分带的高斯-克吕格投影坐标,现在国家全面启用2000坐标系,如果是油田内部的图件,一般不会有什么问题,如果涉及与外部系统进行数据交换...,就要涉及繁琐的坐标转换了。

1.8K20

R可视乎|空间地理数据可视化(1)

连续是指 s 可以 D 连续地变化,Z(s)可以 D 的任何地方被观测到,Z(s) 可以是连续的也可以是离散的;固定是指域 D 的点是非随机的(non-stochastic)。...例子:下图是CMG Lee 绘制的等距矩形世界地图的通用横轴墨卡托区域,其中不规则区域和纽约市突出显示: CMG Lee 绘制的等距矩形世界地图上的通用横轴墨卡托区域 地球上的某一位置可由UTM区号、...3.3 R 设置坐标参考系统 地球的形状可以用一个扁椭球形的模型来近似,它在赤道上隆起,两极扁平,目前世界上有很多不同的参考椭球体来使用,最常用的是全球定位系统(GPS)所使用的世界大地测量系统...例子:创建一个由经度和纬度给出坐标的空间数据集,并使用 rgdal 将其转换为南方 UTM 35 区的坐标数据集: library(rgdal) # create data with coordinates...一个 shapefile 是由一系列相关的文件组成,这些文件有不同的拓展名,并存储同一个目录

3.4K30

使用Actor模型管理Web Worker多线程

这篇文章简单记录一下搜狗地图WebGL引擎(下文简称WebGL引擎)使用Web Worker的一些实践方案,虽然这个项目最终夭折并且我也从搜狗离职了,但在开发WebGL引擎过程的一些心得和实践还是值得写一写的...这么说其实不太严谨,大多数电子地图使用的是墨卡托坐标,经过计算后转换屏幕坐标,而不是真实的经纬度坐标,这个话题不属于本文的范畴,以后会单独讲 栅格地图是位图拼接的,是非矢量的,缩放会失真,这是缺点...瓦片数据可以简单理解为地理坐标+规则,WebGL引擎需要将地理坐标转化为屏幕坐标,然后按照规则将其进一步转化为最终可绘制的数据。...这个整个地图引擎中最复杂的一套计算流程。瓦片中的POI原始数据仅仅是一个点的地理坐标和文本,其中文本需要对应创建一个2D canvas作为WebGL的纹理。..._actors = []; } } Dispatcher需要一个广播API,用来给所有Actor同步信息,比如将瓦片数据的地理坐标转化为屏幕坐标需要用到屏幕的DPR,可以借助broadcast API

1.1K10
领券