坐标转换

Qt之坐标系统

匆匆过客 提交于 2020-03-15 09:06:05
简述 坐标系统是由QPainter类控制的,再加上QPaintDevice和QPaintEngine类,就形成了Qt的绘图体系。 QPainter:用于执行绘图操作。 QPaintDevice:二维空间的抽象层,可以使用QPainter在它上面进行绘制。 QPaintEngine:提供了统一的接口,用于QPainter在不同的设备上进行绘制。 QPaintDevice类是可以被绘制的对象的基类,它的绘图功能由QWidget、QImage、QPixmap、QPicture和QOpenGLPaintDevice继承。默认坐标系统位于设备的左上角,即坐标原点(0, 0)。X轴由左向右增加,Y轴由上向下增加。在基于像素的设备上(比如:显示器),坐标的默认单位是1像素;在打印机上则是1点(1/72 英寸)。 QPainter逻辑坐标与QPaintDevice物理坐标的映射,由QPainter的变换矩阵(transformation matrix)、视口(viewport)和窗口(window)完成。默认情况下,物理坐标与逻辑坐标系统是重合的,QPainter也支持坐标转换,例如:旋转、缩放。 简述 渲染 逻辑表示 锯齿绘制 抗锯齿绘制 坐标转换 窗口-视口转换 更多参考 渲染 逻辑表示 一个图形图元的大小(宽度和高度)总是对应于它的数学模型,忽略绘制时画笔的宽度: 锯齿绘制 绘制的时候

Qt之坐标系统

拜拜、爱过 提交于 2020-03-11 19:51:13
简述 坐标系统是由QPainter类控制的,再加上QPaintDevice和QPaintEngine类,就形成了Qt的绘图体系。 QPainter:用于执行绘图操作。 QPaintDevice:二维空间的抽象层,可以使用QPainter在它上面进行绘制。 QPaintEngine:提供了统一的接口,用于QPainter在不同的设备上进行绘制。 QPaintDevice类是可以被绘制的对象的基类,它的绘图功能由QWidget、QImage、QPixmap、QPicture和QOpenGLPaintDevice继承。默认坐标系统位于设备的左上角,即坐标原点(0, 0)。X轴由左向右增加,Y轴由上向下增加。在基于像素的设备上(比如:显示器),坐标的默认单位是1像素;在打印机上则是1点(1/72 英寸)。 QPainter逻辑坐标与QPaintDevice物理坐标的映射,由QPainter的变换矩阵(transformation matrix)、视口(viewport)和窗口(window)完成。默认情况下,物理坐标与逻辑坐标系统是重合的,QPainter也支持坐标转换,例如:旋转、缩放。 简述 渲染 逻辑表示 锯齿绘制 抗锯齿绘制 坐标转换 窗口-视口转换 渲染 逻辑表示 一个图形图元的大小(宽度和高度)总是对应于它的数学模型,忽略绘制时画笔的宽度: 锯齿绘制 绘制的时候

iOS开发中的火星坐标系及各种坐标系转换算法

青春壹個敷衍的年華 提交于 2020-02-28 21:11:25
其原理是这样的:保密局开发了一个系统,能将实际的坐标转换成虚拟的坐标。所有在中国销售的数字地图必须使用这个系统进行坐标转换之后方可上市。这是生产环节,这种电子地图被称为火星地图。在使用环节,GPS终端设备必须集成保密局提供的加密算法(集成工作由保密局完成),把从GPS卫星那里得到的坐标转换成虚拟坐标,然后再去火星地图上查找,这样就在火星坐标系上完成了地图的匹配。 所以大家所用的百度,高德等地图定位准是偏差几百米 名词总结: 地球坐标:指WGS84坐标系统 火星坐标:指使用国家保密插件人为偏移后的坐标 地球地图:指与地球坐标对应的客观真实的地图 火星地图:指经过加密偏移后的,与火星坐标对应的地图 坐标系转换算法 1. GCJ-02(火星坐标系)和BD-09转换 // GCJ-02 坐标转换成 BD-09 坐标 + (CLLocationCoordinate2D)MarsGS2BaiduGS:(CLLocationCoordinate2D)coordinate { double x_pi = PI * 3000.0 / 180.0; double x = coordinate.longitude, y = coordinate.latitude; double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi); double theta

PIE-SDK For C++屏幕坐标和地图坐标转换

可紊 提交于 2020-02-26 14:47:48
1.功能简介 屏幕坐标和地图坐标转换,就是字面意思,将电脑屏幕的坐标转换为带有空间信息的地图坐标,主要运用 DisplayTransformationPtr 中的 ToMapPoint() 方法,将屏幕坐标转换为地理坐标,而地图坐标转换为设备坐标(屏幕),用的是 FromMapPoint() 方法。 2.功能实现说明 2.1. 实现思路及原理说明 第一步 实例化 point 对象 第二步 调用 ToMapPoint() 或 FromMapPoint() 方法对设备点坐标和地图坐标经进行转化 2.2. 核心接口与方法 接口 / 类 方法 说明 SysDisplay::DisplayTransformationPtr ToMapPoint 将屏幕坐标转换为地图坐标 FromMapPoint 从地图坐标转换为设备坐标 FromPagePoint 将页面点转换为设备点 2.3. 示例代码 项目路径 百度云盘地址下 /PIE 示例程序 /02. 地图操作 /06. 地图鼠标事件监听 数据路径 百度云盘地址下 /PIE 示例数据 / 栅格数据 /04.World/World.tif 视频路径 百度云盘地址下 /PIE 视频教程 /02. 地图操作 /05. 屏幕和地图坐标转换 .avi 示例代码 1、以下代码为 bool PIEMainWindow :: eventFilter (

C#绘制坐标简易曲线控件

时光怂恿深爱的人放手 提交于 2020-02-16 23:48:41
winform Download 控件源码 简单例子 webForm Download 控件源码 简单例子 思路概要: 1 首先确定曲线轴的长度和宽度,确定原点,便于坐标转换 2 分别绘制 X 轴 Y 轴,并且绘制刻度 3 根据实际数据在坐标轴上绘制数据标识 4 绘制曲线,计算实际坐标与数轴坐标之间的转换 5 响应各种鼠标事件 实现: vs2005 +C# 实现(包括 winform 和 webform )两种控件 注意问题: 1 winform 控件问题需要解决闪烁问题,所以每次鼠标事件后都只重新绘制部分曲线或者坐标轴。背景上华坐标轴, pictureBox 上画曲线。 2 控件图标问题,添加 16*16 象素 bmp 格式图片, Build Action 设置为“ Embedded Resource ” , 曲线类头部引用为 “ [System.Drawing. ToolboxBitmap ( typeof (hocylan_Curve. Icon ), "UcDate.bmp" )] ” 3 部分变量定义和坐标转换: 坐标转换: float x,y 分别为鼠标在数轴上的实际值,返回该点对应坐标轴的值 private string TransPositionToValue( float x, float y) { int xPointIndex = Convert

WebGL&Three.js工作原理

拥有回忆 提交于 2020-02-05 04:15:49
一、我们讲什么? 我们讲两个东西: 1、WebGL背后的工作原理是什么? 2、以Three.js为例,讲述框架在背后扮演什么样的角色? 二、我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题: 1、很多东西还是做不出来,甚至没有任何思路; 2、碰到bug无法解决,甚至没有方向; 3、性能出现问题,完全不知道如何去优化。 这个时候,我们需要了解更多。 三、先了解一个基础概念 1、什么是矩阵? 简单说来,矩阵用于坐标变换,如下图: 2、那它具体是怎么变换的呢,如下图: 3、举个实例,将坐标平移2,如下图: 如果这时候,你还是没有理解,没有关系,你只需要知道,矩阵用于坐标变换。 四、WebGL的工作原理 4.1、WebGL API 在了解一门新技术前,我们都会先看看它的开发文档或者API。 查看Canvas的绘图API,我们会发现它能画直线、矩形、圆、弧线、贝塞尔曲线。 于是,我们看了看WebGL绘图API,发现: 它只能会点、线、三角形?一定是我看错了。 没有,你没看错。 就算是这样一个复杂的模型,也是一个个三角形画出来的。 4.2、WebGL绘制流程 简单说来,WebGL绘制过程包括以下三步: 1、获取顶点坐标 2、图元装配(即画出一个个三角形) 3、光栅化(生成片元,即一个个像素点) 接下来

图解WebGL&Three.js工作原理

我怕爱的太早我们不能终老 提交于 2020-02-05 04:12:42
“哥,你又来啦?” “是啊,我随便逛逛。” “别介啊……给我20分钟,成不?” “5分钟吧,我很忙的。” “不行, 20分钟,不然我真很难跟你讲清楚。” “好吧……” “行,那进来吧,咱好好聊聊” 一、我们讲什么? 我们讲两个东西: 1、WebGL背后的工作原理是什么? 2、以Three.js为例,讲述框架在背后扮演什么样的角色? 二、我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题: 1、很多东西还是做不出来,甚至没有任何思路; 2、碰到bug无法解决,甚至没有方向; 3、性能出现问题,完全不知道如何去优化。 这个时候,我们需要了解更多。 三、先了解一个基础概念 1、什么是矩阵? 简单说来,矩阵用于坐标变换,如下图: 2、那它具体是怎么变换的呢,如下图: 3、举个实例,将坐标平移2,如下图: 如果这时候,你还是没有理解,没有关系,你只需要知道,矩阵用于坐标变换。 四、WebGL的工作原理 4.1、WebGL API 在了解一门新技术前,我们都会先看看它的开发文档或者API。 查看Canvas的绘图API,我们会发现它能画直线、矩形、圆、弧线、贝塞尔曲线。 于是,我们看了看WebGL绘图API,发现: 它只能会点、线、三角形?一定是我看错了。 没有,你没看错。 就算是这样一个复杂的模型

【高德地图API】如何解决坐标转换,坐标偏移?

匆匆过客 提交于 2020-01-30 20:05:21
http://bbs.amap.com/thread-18617-1-1.html#rd?sukey=cbbc36a2500a2e6c2b0b19115118ace519002ff3a52731f1388ddf5bf3a144e9ae715c2253b0bba87b05dcc82d6c0e74 摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题。最后给出坐标拾取工具。 --------------------------------------------------------------------------------------------------------------------------- 一、坐标体系 首先我们要明白,开发者能接触到哪些坐标体系呢? 第一种分类: 1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度: 2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。 3、

unity shader 空间坐标转换

萝らか妹 提交于 2020-01-27 11:53:46
空间转换 v2f vert ( a2v v ) { v2f o ; //将顶点从模型空间转换为裁剪空间,因为2d就是平面映射。 o . vertex = UnityObjectToClipPos ( v . vertex ) ; //将顶点从模型空间转换为裁剪空间,因为2d就是平面映射。 o . vertex = UnityObjectToClipPos ( v . vertex ) ; //模型坐标转为世界坐标,因为要计算绝对位置 o . pos = mul ( unity_ObjectToWorld , v . vertex ) ; //将坐标转为裁剪空间,否则就无法正常可视化 o . pos = mul ( UNITY_MATRIX_VP , o . pos ) ; //输出法线 = 转换后的世界坐标法线 float3 worldNormal = UnityObjectToWorldNormal ( o . normal ) ; //从世界坐标转换到裁剪空间的坐标信息 pIn . pos = mul ( UNITY_MATRIX_VP , p [ 0 ] . pos ) ; //从世界坐标转换到裁剪空间的坐标信息 pIn1 . pos = mul ( UNITY_MATRIX_VP , pos ) ; //当前的模型观察矩阵, 用于将顶点/方向数据从模型空间变换到观察空间

坐标转换tf

ε祈祈猫儿з 提交于 2020-01-21 05:47:04
tf介绍 坐标转换(TransForm: 位置 和 姿态 ) 坐标变换是空间实体的位置描述,是从一种坐标系统变换到另一种坐标系统的过程。通过建立两个坐标系统之间一一对应关系来实现 下图为机器人几个部件之间的坐标关系 tf概念 tf是一个 用户随时间跟踪多个坐标系的包 ,机器人不同部位和世界的坐标系以 tree structure 的形式存储起来, tf管理一系列的树状结构坐标系之间的关系 允许用户在各个坐标系中进行点、向量的 变换 通俗的说tf可以帮助我们实时的在各个坐标系中进行坐标转换 TF树样例 tf认知 环境搭建,运行已下命令安装相关插件资源 sudo apt-get install ros- kinetic -ros-tutorials ros- kinetic -geometry-tutorials ros- kinetic -rviz ros- kinetic -rosbash ros- kinetic -rqt-tf-tree 运行以下命令打开demo程序 roslaunch turtle_tf turtle_tf_demo.launch 将当前运行命令的窗口作为激活窗口,用箭头按键控制小乌龟移动,另外一只小乌龟讲会跟着移动 这个demo用tf库建立了三个坐标系, 世界坐标系 , 乌龟1坐标系 , 乌龟2坐标系 在乌龟移动的过程中,tf库创建了一个 tf发布器 ,