世界坐标系前端分类

世界坐标系有哪些分类
世界坐标系是依据笛卡尔右手坐标系来确定图形中的各点位置,X轴为水平方向,Y轴为垂直方向,Z轴为垂直于XY平面的方向,远点O的坐标为(0,0,0)。世界坐标系是一个固定不变的坐标系,是默认的坐标系,可是,世界坐标系也是有分类的。那么,它有哪些分类呢?

1.直角坐标系

直角坐标系是由一个坐标为(0,0)的原点,由通过原点并且互相垂直的两个坐标轴X、Y轴为水平方向,向右为正方向;Y轴为垂直方向,向上为正方向。通过一组坐标值(X,Y)来定义某点的位置。

2
2.极坐标系

极坐标系是由一个极点和一个水平向右的极轴构成。点的位置可通过该点到极点的连线长度L和该连线与极轴的交角a(逆时针方向为正)确定,即通过一组坐标值(L<a)来定义点的位置。

3
3.相对坐标

在某些情况下,用户需要直接通过点与点之间的相对位移来绘制图形,这些需要使用相对坐标。在cad2011中用“@”来标示相对坐标。相对坐标可以使用直角坐标,也可以使用极坐标。

比如,某一直线的起点坐标为(8,8)、终点坐标为(8,10),则终点对于起点的相对坐标为(@0,2),用相对极坐标表示为(@2<90)。

目前学习了mapbox, three.js, webgl, cesium的过程中,发现坐标系是一个非常重要的东西,目前我所了解到的坐标系对其进行一个总结,先粘贴上图片:

在这里插入图片描述

1. 屏幕坐标系(平面坐标系,笛卡尔2坐标系,像素坐标系,坐标系格式为(x, y)):
屏幕坐标系就是平面直角坐标系,我们在平面中使用的坐标,格式为x,y,在cesium中使用Cartesian2进行初始化,日常使用中的屏幕像素坐标就是平面坐标系坐标,鼠标在地图上点击位置时返回的就说一个Cartesian2笛卡尔2对象

转换方法:
屏幕坐标系转换为笛卡尔3坐标系的三种方法,均默认click.position为点击地图后返回的屏幕像素x,y坐标:
(1)//pickEllipsoid(windowPosition(像素的x,y坐标,笛卡尔2),ellipsoid(要选择的椭球),result): 获取鼠标点的对应椭球面位置(世界坐标Cartesian3)
const wordPosition = viewer.scene.camera.pickEllipsoid(click.position, viewer.scene.globe.ellipsoid)

(2)// getPickRay(windowPosition像素的x,y坐标):从相机位置通过点的像素创建一条射线
const ray = viewer.camera.getPickRay(movement.position)
pick(ray(测试相交的射线,scene(场景))):找到光线和渲染的地球表面之间的焦点
const rayPosition = viewer.scene.globe.pick(ray, viewer.scene)

(3)// pickPosition: 返回从深度缓冲区和窗口位置重建的笛卡尔位置
const pickPosition = viewer.scene.pickPosition(movement.position)

屏幕坐标系转换为弧度制的两种方法:
(1)//将笛卡尔坐标转换为84地理坐标
const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
//将弧度转为度的十进制度表示
const lon = Cesium.Math.toDegrees(cartographic.longitude);
const lat = Cesium.Math.toDegrees(cartographic.latitude);

(3)//将笛卡尔坐标转换为84坐标系
const curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartographic );
const lon = curPosition.longitude * 180 / Math.PI;
const lat = curPosition.latitude * 180 / Math.PI;

2.笛卡尔空间坐标系(笛卡尔2,笛卡尔3(世界坐标系),笛卡尔4):
笛卡尔坐标系是直角坐标系和斜角坐标系的统称,我们日常开发所用主要是二维直角坐标系和三维空间坐标系
二维直角坐标系:就是上面的屏幕坐标系,Cesium.Cartesian2(x, y)
在这里插入图片描述
三维直角坐标系:也叫做世界坐标系,可以看作是以椭球中心为原点的空间直角坐标系中一个点的坐标, 以圆心为原点ow,xw轴水平向右,yw轴像下,zw是由右手法则确定,在three.js中也用的右手坐标系,计算机中常用到左手坐标系,左手坐标系(x向右,y向上,z向前)和右手坐标系(x向右,y向上,z向后)只是两者的Z轴相反
格式:Cesium.Cartesian3(x, y, z)

3.WGS84地理坐标系(经纬度坐标系):
WGS84坐标系是国际上采用的地心坐标系,坐标原点是地球质心,地心空间直角坐标系的Z轴指向地球级(CTP)方向,X轴指向零子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系,我们常使用的经纬度也是从84坐标系中取出,经度(参考椭球面上某点的大地子午面与本初子午面间的两面角,东正西负),纬度(参考椭球面上某点的法线与赤道平面的夹角。北正南负),其经纬度范围分别为[-180,180]和[-90,90]
格式:Cesium.Cartographic(longitude, latitude, height)
在这里插入图片描述
4.火星坐标系:
GCJ02火星坐标系是WGS84坐标系加密后的坐标系,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,一般我们所用到的主流地图上的坐标系都是火星坐标系

坐标系分类:世界、相机、图像坐标系之间的转换
像素坐标(u,v)—>成像面/图像物理坐标(x,y)—>相机坐标(Xc,Yc,Zc)—>世界坐标(Xw,Yw,Zw)

1.像素坐标(u,v)—[物理尺寸构建桥梁:透视投影]—>成像面/图像物理坐标(x,y)

假设每一个像素在u轴和v轴方向上的物理尺寸为dx、dy

如下图,
在这里插入图片描述

可得,

u = x / dx + u0

v = y / dy + v0

其中,

dx、dy是感光芯片上像素的实际物理大小,是连接像素坐标系到成像坐标系的真正桥梁

*u0、v0是图像平面中心(图像中心像素点坐标)

2.成像物理坐标(x,y)—[内参构建投影关系:刚体变换]—>相机坐标(Xc,Yc,Zc)

3.相机坐标(Xc,Yc,Zc)—[外参构建旋转平移关系]—>世界坐标(Xw,Yw,Zw)

*4.旋转矩阵->欧拉角<->四元数

*5.相机标定

*畸变:一般分为径向畸变和切向畸变,前者来自于透镜形状差异,后者来自于这相机的组装过程误差导致像平面和镜头不完全平行,在一些线性标定(因为摄像头已经足够贵了…)中也会忽略。

抽象的来说,

我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图。这个从三维到二维的函数是不可逆的。相机标定的目标就是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个三维到二维的过程,使得这个三维到二维的过程的函数找到反函数。

*不可逆我理解为输入的因素不能完全的考虑到,图像识别也是一个永远不可能100%完美的求逆过程。

通俗的说,

把求得相机的内参、畸变系数、外参的过程称为相机标定,前两者的标定主要采用张正友标定法及相关软件、外参的标定主要采用手眼标定发及相关软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值