`
18211103738
  • 浏览: 82700 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

线性代数及三维旋转矩阵(与3D和WebGL相关)

阅读更多
1.基本概念:

WebGL中使用三维/正交/右手坐标系

 

三维:三个坐标轴(x轴/y轴/z轴)

正交:两两垂直

右手:x轴拇指正方向/y轴食指正方向/z轴无名指正方向

 

3D坐标系中原点的位置:(Vx, Vy, Vz)=(0, 0, 0)

 

标量:有大小无方向(如:温度/质量/能量)

矢量:有大小有方向(如:力/加速度/速度)

 

矢量相加/矢量相减

 

矢量乘以标量等于一个新的矢量:KV = (KVx + KVy + KVz)

V = (Vx, Vy, Vz)

如果K为-1,则得到一个与原矢量大小相等/方向相反的新矢量

 

3D空间中两个矢量相乘有两种方式:

点积/标积(scalar product)

叉积(cross product)

 

点积

定义: u.v = |u||v|cos@

代数形式: U.V = UxVx + UyVy + UzVz (x/y/z两两相乘之和)

 

叉积

定义: W = U x V

代数定义: W = U x V = (UyVz - UzVy, UzVx - UxVz, UxVy - UyVx)

 

叉乘的结果是一个新矢量,这个新矢量具有以下属性:

|w| = |u||v|sin@

w正交与u和v

w与u和v符合右手定则

 

叉积不满足交换律,但有以下关系:

U x V = -V x U

 

 2.齐次坐标:

 

齐次坐标:P = (Px, Py, Pz, Pw)

对于矢量,w = 0;当w # 0时,则齐次坐标指定一个点。

 

引进齐次坐标有什么必要,它有什么优点呢?

答:许多图形应用涉及到几何变换,主要包括平移、旋转、缩放。

以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘

综合起来可以表示为p' = p*m1 + m2(m1旋转缩放矩阵, m2为平移矩阵, p为原向量 ,p'为变换后的向量)。

引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为p' = p*M的形式。

即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。

 

 3.矩阵:


在WebGL中,最常用的是4x4的矩阵:

只有一个列的矩阵叫列矢量:

 

只有一个行的矩阵叫行矢量:

 

行数和列数都相等的两个矩阵才可以相加或相减(两个m×n矩阵A和B的和,标记为A+B,一样是个m×n矩阵,其内的各元素为其相对应元素相加后的值。)

 

只有当矩阵A的列数等于矩阵B的行数时,矩阵A才可以乘以矩阵B:

[M x P][P x N] = [M x N]

 

方阵:列数和行数相等的矩阵称为方阵

 

单位矩阵:对角位置的元素为1,其他位置的元素为0,这样的方阵称为单位矩阵(通常用I表示,与标量1相对应)

 

矩阵M乘以它的逆矩阵,结果为单位矩阵

 

只有方阵才有逆矩阵,但不是所有的方阵都有逆矩阵

  • 大小: 11.8 KB
  • 大小: 3.9 KB
  • 大小: 3.1 KB
  • 大小: 10.7 KB
  • 大小: 12.7 KB
  • 大小: 13.6 KB
  • 大小: 13 KB
  • 大小: 11.2 KB
  • 大小: 9.2 KB
分享到:
评论

相关推荐

    基于WebGL实现的3D曲面图表组件

    这涉及到颜色的线性代数计算,如向量和矩阵操作。 5. **交互性**:组件通常支持用户交互,如鼠标滚轮缩放、拖动平移和点击高亮等。这些交互功能需要监听DOM事件,并更新WebGL的渲染状态。 6. **性能优化**:由于...

    WEBGL学习资料8-16

    WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中进行三维图形渲染,无需插件。这个“WEBGL学习资料8-16”的压缩包文件显然是一个专门针对WebGL初学者的学习资源集合,涵盖了从第8课到第16...

    程序_三维图_散斑_源码

    例如,你可以创建一个包含多边形、曲线、表面的三维模型,并通过变换矩阵进行旋转、缩放和平移操作。此外,还可以通过着色器语言(如GLSL)进行自定义的光照计算,以实现逼真的视觉效果。 散斑图则是一种特殊的图像...

    3d穿越特效 全部源代码.rar

    - 学习线性代数和向量运算,这是理解和操作3D空间的基础。 - 实践项目,通过编写实际的代码来加深理解。 总之,"3d穿越特效 全部源代码.rar"这份资源为你提供了探索和学习3D特效的起点,你可以从中分析代码,理解...

    3种不同风格3D照片效果

    - **矩阵运算**:3D变换涉及到大量的矩阵运算,包括平移、旋转和缩放,这些都需要对线性代数有一定的理解。 - **光照和阴影**:真实感的3D效果需要考虑光源的位置和类型,以及物体表面材质对光的反射和吸收,这些...

    3D相册图片滑动+倾斜+放大

    这是通过在3D空间中模拟图片的滑动效果,使得图片在切换时不仅有传统的左右或上下移动,还能带有深度感,仿佛在三维空间中平移。这通常需要利用矩阵变换、透视投影等3D图形学原理来实现。开发者可能使用如OpenGL、...

    3D 立方体.zip

    首先,3D立方体的构建通常涉及矩阵运算,通过数学上的线性代数来定义每个面的位置。在Web开发中,我们常常使用WebGL或者Three.js这样的JavaScript库来实现。Three.js提供了一种简洁的API,可以方便地创建3D几何体,...

    23个纯代码程序3D动画

    3. **线性代数与几何**:3D编程离不开向量、矩阵、旋转和平移等概念。理解这些数学原理是创建3D动画的基础,它们用于描述物体的位置、方向和运动。 四、模型加载与表示 4. **3D模型格式**:3D模型通常以特定的文件...

    计算机图形学教程 课后答案

    答案将涵盖如何使用矩阵来表示和执行这些变换,同时还会涉及线性代数的基础知识。 第三章:三维几何 三维几何部分涵盖了三维坐标系、多边形表示、法线计算以及三维变换。课后答案会详细介绍如何构建和操作3D对象,...

    魔方游戏源码

    2. **数学基础**:包括线性代数、向量和矩阵运算,这些是3D空间中对象变换(旋转、平移、缩放)的关键。四元数也被广泛用于表示旋转,以避免经典的万向节死锁问题。 3. **算法设计**:魔方的每一步转动都需要对应的...

    计算机图形学课程设计.zip

    5. **三维建模**:理解如何创建、编辑和操纵3D模型,以及相关的文件格式,如Wavefront OBJ或3DS格式。 6. **交互式图形**:涉及用户输入的处理,例如鼠标和键盘事件,以及实时响应的实现。 7. **游戏开发**:如果...

    js3Dtest:尝试制作一个基本的 3D JS 引擎

    5. **3D数学**:线性代数,如向量、矩阵和四元数,在3D图形中用于表示和操作几何形状。理解这些概念对于计算相机视角、光照和物体运动至关重要。 6. **3D模型加载与解析**:为了在3D场景中展示模型,需要将3D模型...

    计算机图形学-计算机图形学课件

    6. **线性代数**:向量、矩阵、逆矩阵、行列式、特征值等概念在图形学中广泛使用,特别是坐标变换和光照计算。 7. **光照模型**:如Phong模型,用于模拟物体表面的反射、漫射和高光效果,使图像更具真实感。 8. **...

    计算机图形学期末试卷及答案

    它涵盖了广泛的概念和技术,从二维和三维几何表示到光栅化、光照模型、纹理映射,再到高级的渲染算法和交互式图形。这门课程通常会在计算机科学、工程或相关领域的大学课程中教授,为学生提供游戏开发、虚拟现实、...

    拓扑:可视化器,用于任意维空间中的基本几何图元和分形

    总的来说,这个拓扑可视化器是一个强大的工具,它融合了WebGL、OpenGL、线性代数、IFS等技术,让高维几何和分形理论不再遥不可及,而是成为可以直观体验和探索的领域。通过这个项目,无论是学生、教师还是对数学和...

    3Dkalkulator_1402018089

    例如,用户可能可以输入三维坐标,计算器通过JavaScript处理这些数据,进行旋转、缩放和平移操作,然后在Canvas上绘制出3D视图。这样的应用可能使用了Three.js、WebGL或其他JavaScript库来简化3D编程。 为了创建...

    StuyGraphics:Stuy Graphics 课程的笔记和练习!

    1. **向量与矩阵**:计算机图形学的基础是线性代数,向量和矩阵在描述图形变换、坐标系统转换等方面起着关键作用。了解向量加减、标量乘法、点积和叉积等基本操作,以及矩阵乘法和逆矩阵,是理解图形变换的基础。 2...

Global site tag (gtag.js) - Google Analytics