Cesium 矩阵变换

article/2025/9/15 6:52:45

在Cesium和其他三维开发中中经常用到矩阵变换。比如将一个物体移动、缩放、平移都可以用变换矩阵来计算。

再比如将三维场景中的物体转换为屏幕上显示的二维图形,需要用到透视投影(perspective projection)矩阵。

变换(tansformation)是一个函数,实现将一个空间坐标映射为另一个空间坐标,矩阵(matrix)是这种计算的一种方式,在三维开发中用途广泛。

一、向量

1.1、向量的基本概念

向量又称为矢量(vector),表示既有大小又有方向的量。在物理学中,力,速度,位移等都可以用向量来表示。 

向量通常用一个有向线段表示。

1.2、向量的加法

向量的加法运算符合平行四边形法则。

设向量a(x1,y1,z1)b(x2,y2,z2),则

a+b =(x1+x2,y1+y2,z1+z2)

1.3、向量的长度

向量的大小,也就是向量的长度(magnitude),也称为模,是一个标量。

设向量a(x,y),则向量a的长度记为|a|,公式如下,三维向量的公式同理。 

1.4、归一化向量

向量的归一化就是把向量的长度变为1,方向保持不变。公式为:

向量v称为u的归一化(normalization)向量。 

1.5、向量的点积和投影 

向量的点积(dot product)又称为数量积(scalar product)或内积(inner product)。

向量的点积是一个标量,也就是一个数值。

设向量a,b,向量a和向量b的夹角,0≤θ≤π,则向量的点积公式如下:

设向量a(x1,y1,z1)b(x2,y2,z2),则

a·b=x1*x2+y1*y2+z1*z2

如果a·b=0,则成ab是正交的。

|OB1| =|b|cosθ ,|OB1| 称为b在向量方向上的投影。

投影向量如下,很容易推导。

 

1.6、向量叉积

向量的叉积(cross product),又称外积(outer product)

设向量a和b的叉积为n,则n与a和b都正交,向量a,b和n构成一个右手坐标系(right-handed coordinate system)

叉积n的长度为:

设向量a(xa,ya,za)b(xb,yb,zb),则 

  

二、矩阵

2.1、矩阵的基本概念

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵(引用百度百科)。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列。

(1)矩阵的加法

同型矩阵之间才可以进行相加。减法同理,就是对应元素相减。

(2)单位矩阵

一个矩阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0,称为单位矩阵,通常记为E。

任何矩阵与单位矩阵相乘都等于本身。

  

(3)矩阵的转置

把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵这一过程称为矩阵的转置。

(4)逆矩阵

A是一个n阶矩阵,若存在另一个n阶矩阵B,使得: AB=BA=,则称方阵A可逆,并称方阵B是A的逆矩阵,B=A-1 

(5)矩阵乘法

两个矩阵相乘在三维变换中极为重要。

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。

比如一个4×4矩阵和4×1矩阵相乘得到的是一个4×1矩阵。

 

矩阵的乘法满足以下运算律:

结合律:   (AB)C=A(BC) 

左分配律:(A+B)C=AC+BC

右分配律:C(A+B)=CA+CB

矩阵不满足交换律 ,也就是AB != BA,这个在后面介绍的矩阵变换后会有直观的感受。 

在三维开发中经常用到矩阵和矢量相乘,点和向量都可以用一个列矩阵来表示。

比如将一个空间中的点P(x,y,z)左乘一个3✖3的矩阵得到新的坐标P1(x',y',z')。

 

  

2.2、平移变换

平移(translation)变换是把空间中一个点沿着给定的方向移动固定的距离,设位移向量d,点P移动后P1,则 P1=P+d;

如果用齐次坐标(homogeneous coordinate)表示点和向量(齐次坐标的概念请自行查阅资料学习),

设点P(x,y,z,1),点P1(x',y',z',1),向量d=(tx,ty,tz,0),则

x'=x+tx

y'=y+ty

z'=z+tz

表示成矩阵形式如下:

平移变换矩阵即为:

2.3、旋转

计算点p绕着z轴旋转θ角后的p‘的坐标,r为OP的长度。

x=rcosA

y=rsinA

x'=rcos(A+θ)

y'=rsin(A+θ)

利用两角和的三角函数公式可得到

x'=xcosθ - ysinθ

y'=xsinθ + ycosθ

z'=z

用矩阵表示,绕Z轴旋转的变换矩阵为:

 绕X轴旋转的变换矩阵为:

绕Y轴变换的矩阵 

2.4、缩放

假设在X轴,Y轴,Z轴上的缩放因子分别为Sx,Sy,S 

2.6、模型视图投影矩阵

这个以后再说

三、Cesium中的坐标系

Cesium中的地球默认采用的是WGS84坐标系。

四、Cesium中的矩阵变换

五、相关示例


http://chatgpt.dhexx.cn/article/d38WLfhs.shtml

相关文章

浅谈矩阵变换——Matrix

矩阵变换在图形学上经常用到。基本的常用矩阵变换操作包括平移、缩放、旋转、斜切。 每种变换都对应一个变换矩阵,通过矩阵乘法,可以把多个变换矩阵相乘得到复合变换矩阵。 矩阵乘法不支持交换律,因此不同的变换顺序得到的变换矩阵也是不相同…

变换矩阵

1、变换矩阵 变换矩阵可以分解为缩放,旋转,平移矩阵的乘积: M T * R * S - 右手坐标系 当均匀缩放时,旋转和缩放可以交换顺序 缩放和平移不可以交换顺序 2、子坐标系与父坐标系 由在父坐标系中的坐标位置P,和三…

矩阵基础与变换

矩阵基础 矩阵的基本概念 由 m n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m n矩阵(引用百度百科)。记作: 这mn 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列。 矩阵的加法 同型…

2.2 矩阵变换

写在前面:作者本人是纯纯的菜鸟,学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》,欢迎各位大佬或新手在这里和平讨论,如果我有错误请各位不吝赐教,提前感谢各位捧场! 何为矩阵变化&#…

线性代数学习笔记——第七十二讲——共轭矩阵

1. 本讲内容概要 2. 复数及其性质及复数的运算 3. 复共轭及模 4. 共轭矩阵的定义及性质

共轭矩阵 正定矩阵

https://blog.csdn.net/know9163/article/details/80551764

共轭 、 共轭转置、共轭矩阵、酉矩阵、正定矩阵、半正定矩阵

共轭复数 实数部分相同而虚数部分互为相反数的两个复数。 矩阵的共轭转置 把矩阵转置后,再把每一个数换成它的共轭复数。 自共轭矩阵 矩阵中每一个第i 行第j 列的元素都与第j 行第i 列的元素的共轭相等。 酉矩阵 AH 是A 的共轭转置 A叫做酉矩阵 正定矩阵 半正…

matlab-线性代数 对矩阵取共轭(不用函数)

由上图所示,可以得知:a是求矩阵的共轭转置,而a.是求矩阵的共轭。在数学中,共轭转置表示为在矩阵的右上角加上H。 如果矩阵是实数矩阵,那么a和a.的结果一样,都是求矩阵的转置,如下图所示&#xf…

我的矩阵学习

摘自矩阵(数学术语)_百度百科 定义 由 m n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m n矩阵。记作: 这mn 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i…

矩阵的共轭

The conjugate of a matrix(矩阵的共轭):矩阵元素中有复数(complex number),将矩阵中的复数求共轭,实数不变。矩阵的共轭记为。如:

旋转矩阵,矩阵,共轭矩阵

旋转矩阵,矩阵,共轭矩阵 1.旋转矩阵1. 旋转矩阵简介2. 性质3. 二维空间3.1 普通旋转3.2 复平面 4. 三维空间4.1 旋转4.2 角-轴表示和四元数表示4.3 欧拉角表示4.4 对称保持 SVD 表示 5 .其他5.1 旋转轴5.2 叉乘计算 2 矩阵2.1 定义2.2 矩阵的基本运算2.3…

矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法

矩阵的迹(Trace) n n n\times n nn的方阵A的n个对角线元素的和称为方阵A的迹,记作tr(A). A ( a 11 ⋯ a 1 n ⋮ ⋮ a n 1 ⋯ a n n ) A\begin{pmatrix}a_{11}&\cdots &a_{1n}\\\vdots&\ &\vdots\\a_{n1}&\cdots&a_…

共轭复数,共轭根式,共轭矩阵,共轭方向,共轭方向法,共轭梯度法,共轭分布,共轭函数,傅里叶变换的共轭对称

目录 1. 共轭复数 2. 傅里叶变换的共轭对称性 3. 共轭根式(radical conjugates) 4. 共轭矩阵(自共轭矩阵、Hermitian(埃尔米特)矩阵) 5. 共轭方向 6. 共轭方向法 7. 共轭梯度法 8. 共轭分布(conjugacy) 9. 共轭函数&…

Java关键字之Assert

参考博客来自:Assert断言语法与触发 一.assert关键字是什么? 在C和C语言中都有assert关键,表示断言。 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多,与之同理的就是if&#xff…

java关键字概念

1. 访问控制 1) private 私有的 private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言…

Java关键字—基本数据类型

Java关键字之—基本数据类型 byte、shout、int、long、float、double、boolean、char关键字 byte、shout、int、long、float、double基本数据类型中的数值型,且在保存数据时第一个bit要作为符号位进行整形符号的保存,0为正数,1为负数。 byte…

Java关键字和标识符

java关键字和标识符知识点详细解析,如下: java关键字知识点 什么是java关键字? 关键字的概念:Java 语言中有一些具有特殊用途的词被称为关键字。 java中常用关键字: 注意:Java 关键字是区分大小写的。所…

Java关键字查询

java关键字_百度百科 (baidu.com)https://baike.baidu.com/item/java%E5%85%B3%E9%94%AE%E5%AD%97/5808816?fraladdin 关键字 含义 abstract 表明类或者成员方法具有抽象属性 assert 断言,用来进行程序调试 boolean 基本数据类型之一,声明布尔类…

6、java关键字

6、关键字 6.1、final 最终的 -修饰基本类型变量,一经出初始化后就不能够对其进行修改。 -修饰引用类型变量,不能够指向另一个引用。 - 修饰类:表示类不可被继承 - 修饰方法:表示方法不可被子类覆盖,但是可以重载 -…

Java关键字this详解

this关键字概述 在实例方法或构造函数中,this 是对当前对象的引用调用其方法或构造函数的对象。 可以使用 this 在实例方法或构造函数中引用当前对象的任何成员。 this与字段一起使用 使用this关键字的最常见的情况是字段被方法或构造函数中的参数覆盖&#xff0…