【图形学】数学基础

news2024/11/24 14:55:59

行矩阵和列矩阵

在图形处理中,矩阵操作时最基本的操作,但是不同的系统中对矩阵的存储是不同,比如OpenGL和Cg中就是不一样的:

比如一个4x4矩阵

					      [m11,m12,m13,m14

                           m21,m22,m23,m24

                           m31,m32,m33,m34

                           m41,m42,m43,m44]

在实现中通常将其存储为一个一维的线性数组如float matrix【16】或者float* matrix。

在opengl中这个matrix中数据的顺序是先遍历列的,线性存储为{m11,m21,m31,m41,m12,m22,m32…},这被称为矩阵的列序存储。
GLM数据库采用的是列序存储。
Directx的数学库是行序存储。 opengl和hlsl都要求矩阵是列序存储。

左手坐标系与右手坐标系

Direct3D使用的是左手坐标系,而OpenGL与我们平日接触到的数学使用的则是右手坐标系:
在这里插入图片描述

纹理坐标系和屏幕坐标系

为了避免混淆,这里直说Direct3D的。由于Direct3D支持3D纹理,纹理坐标系实际上是可以有三个维度的,如下图所示。只不过我们绝大多数情况使用的仅仅是2D纹理,故只需要考虑X轴和Y轴的部分。
在这里插入图片描述

屏幕坐标系(2D)与纹理坐标系的X轴、Y轴朝向是一致的。

在这里插入图片描述

矩阵乘法

我的理解,矩阵乘法本质上就是大家说的线性变换,这种线性变换就是投影
在这里我产生了两种思考方式,一是顺向思考,二是逆向思考。以旋转矩阵为例

  1. 顺向思考,想象向量随着矩阵一起旋转,矩阵m顺时针变换成为m’(m’ = m的各个基向量旋转后),V的数据依然不变,只是V现在是m’下面的坐标,并且V跟着M一起顺时针变化了。现在求V在原来的空间坐标下(世界坐标)的值v’,v’即v顺指针旋转后的坐标
    v’ = v * m’ //右乘行矩阵
    这个m’也就是常说的local space或者model space。
    顺向思考适合计算在世界空间下坐标点在经过平移旋转等变换后的新的坐标。
  2. 逆向思考,想象矩阵旋转但是向量没有旋转。
    比如你有一个向量V矩阵M。
    现在矩阵M绕y轴顺时针旋转了n°,为M’。
    那么V
    M’=V’。 V’就是V在矩阵M’这个坐标系下的新的坐标。坐标系顺时针转了n°,也可以看成是V逆时针转了n°。也就是V’ = V逆时针转n°的坐标。
    可推,如果你想得到V顺指针转n°的结果V’。 V’ = V* 逆(M顺指针转n度)
    求的是原来的坐标在新的空间M’下的坐标。所以用的是M变换为M’的逆矩阵,即从M’变为M
    逆向思考适合计算有一个新的观察坐标系,计算世界空间下的点在新的坐标系下的坐标。例如求lookat矩阵。

行矩阵和列矩阵

行矩阵:每一行是基向量
列矩阵:每一列是基向量
如果是左乘,向量应该乘行矩阵
如果是右乘的。应该乘列矩阵

分清行矩阵/列矩阵和行主序/列主序的区别

左乘还是右乘

不考虑计算机图形学,我们上学时学到的矩阵写法一般是行主序,那么其有投影意义的应该是右乘。即
M([x, y, z]) * v = v’

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海康威视网络摄像头校时、修改分辨率等操作汇总!

目录 操作环境: 操作原因: 解决办法: 手动校准时间,随着时间推移,可能再次出现偏差,操作简单: 【IVMS-4200】对设备批量校时操作指导:操作之前先把本地服务器的时间改对&#x…

【学习笔记】Kylin-Desktop-V10-SP1 麒麟系统知识2——账户设置

提示:学习麒麟Kylin-Desktop-V10-SP1系统账户设置相关知识,包含用户名修改、用户密码修改、账户类型修改、开机自动登录、免密登录、添加用户、删除用户,以及修改登录选项相关知识 一、前期准备 成功安装麒麟系统(本次实验的安装…

视频压缩成文件怎么弄?4招教会你

视频文件过大,不仅占用存储空间,还影响传输效率。但是,压缩视频时又担心会损失画质。有没有一种方法,能在不牺牲画质的前提下,实现视频文件的压缩呢?答案是肯定的。 想快速学会怎么视频压缩不改变清晰度&a…

手机二要素接口如何用C#实现调用

一、什么是手机二要素? 手机二要素又称运营商二要素,运营商二要素核验,实名核验,手机号核验,手机二要素核验,即传入姓名、手机号码,校验此两项是否一致。实时核验,返回校验结果&…

不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!

非局域网环境下,怎么远程桌面?还能做到吗? 在企业管理中,远程桌面访问已成为提高工作效率、实现跨地域协同工作的关键工具。 然而,当被控端与控制端不在同一局域网时,如何实现远程桌面连接成为了许多企业…

ROS学习笔记(二):鱼香ROS — 超便捷的一键安装/配置/换源指令(Ubuntu/ROS/ROS2/IDE等)

文章目录 前言鱼香ROS1 一键安装:快速搭建开发环境2 具体使用2.1 如何开始?2.2 我的常用配置方案2.3 安装示例 3 总结相关链接 前言 关于Ubuntu与ROS的常规安装,可以看这几篇。 SLAM实操入门(一):在已有…

特种作业管理系统 —— 企业安全与效率的卓越保障

在当今复杂多变的工业生产和作业环境中,安全与效率是企业发展的两大核心关键。我们深知您在特种作业管理方面面临着诸多挑战,如作业流程的规范性、证件的有效管理以及设备的安全运行等。今天,我们为您带来一款专门解决这些问题的创新产品——…

如何解决项目申报过程中文件管理混乱问题?

在项目申报的复杂流程中,文件管理是一项至关重要的环节。它直接关系到项目信息的完整性、安全性和可访问性。然而,传统的文件管理方式往往面临诸多痛点,如资料分散、权限混乱、版本冲突等。 文件管理痛点 资料分散难管理:在项目…

2024年【黑龙江省安全员C证】报名考试及黑龙江省安全员C证免费试题

题库来源:安全生产模拟考试一点通公众号小程序 黑龙江省安全员C证报名考试考前必练!安全生产模拟考试一点通每个月更新黑龙江省安全员C证免费试题题目及答案!多做几遍,其实通过黑龙江省安全员C证模拟考试很简单。 1、【多选题】《…

如何搭建测试平台?理清思路很重要

01 测试平台 01 职责 一个健康的测试平台体系,对测试人员的职责分工、协作模式会有不同的要求。 测试平台核心的职责是完成高质量的交付已满足业务需求。测试活动包括单元测试、集成测试、接口测试、性能测试等,都是通过这些测试手段,协同…

22k star,最强开源堡垒机,强推

最开始接触jumpserver已经是五年前了,最近又发布了最新的v3版本,迫不及待的就去体验了一波,真心不错,增加很多新的功能,操作真的丝滑,比起公司采购的上个世纪的堡垒机真心好用多了。 1 jumpserver简介 ju…

【linux进程】深度理解进程--什么是进程什么是pcb进程创建

目录 前言一,对PCB的理解二,CPU对进程列表的处理三,进程标识符:pid1. 查看系统进程1: ps axj2. 查看系统进程2: /proc 四,系统调用函数:getpid五,父进程和子进程的概念六,创建子进程--fork函数的使用1. 创建…

CSS颜色设置

我们在显示屏上看到的各种颜色都是通过红(red)、绿(green)、蓝(blue)三原色组合而成的,按不同的比例混合这三种颜色就可以得到其它颜色,通过调整红、绿、蓝三种颜色的数值可以最大限…

微信开发者工具审查界面元素

一、打开调试器 二、审查元素 点击调试器左边的箭头,将鼠标放在界面上即可审查元素

Node-RED-L2-Node-RED在Linux系统启动时自动运行

Node-RED在Linux系统启动时自动运行 目的步骤1创建服务文件:2重新加载服务:3启用服务:4启动Node-RED服务:5检查服务状态:6其他说明7如果没启动正确的Node-RED执行路径:确保使用绝对路径: 检查用…

Servlet入门:服务端小程序的初试(自己学习整理的资料)

目录 一.前言 二.建立基础结构​编辑 三.具体步骤 找到Tomcat文件并打开Tomcat。 在webapps中创建一个自己的文件夹。 在classes中新建一个Java文件。 在lib中导入需要的jar文件包。 配置环境变量 在Java文件的目录下打开cmd并输入 javac -d . HelloServlet.java进行…

深兰科技陈海波应邀出席2024长三角论坛暨虹桥人才创新发展大会

近日,以“人才引领 联动共融——国际化创新与长三角协同”为主题的“2024长三角人才发展论坛暨虹桥人才创新发展大会”在上海国际会议中心隆重举行。上海市委常委、组织部部长、市委人才办主任张为应邀出席并做大会致辞。 深兰科技创始人、董事长陈海波作为特邀企业…

多用户自定义商城小程序源码系统 独立部署 到源代码包以及搭建部署教程

系统概述 随着移动互联网的迅猛发展,消费者的购物习惯逐渐向线上转移。传统电商平台虽然提供了一定的便利,但也存在一些局限性,如高昂的入驻费用、缺乏个性化定制等。为了适应市场需求,多用户自定义商城小程序源码系统应运而生。…

linux 之0号进程、1号进程、2号进程

一、0号进程 0号进程,通常也被称为idle进程,或者也称为swapper进程,其 pid 等于0。 0号进程是linux启动的第一个进程,它的task_struct的comm字段为"swapper",所以也称为swpper进程。 kernel/include/linux/init_task…

IO分类,IO模型,Java中的IO模式

写在前面 本文看下几个比较容易混肴的概念,IO分类,IO模型,Java的IO模式。当然,都是我自己的理解,有哪里不对的,烦请留言告知。 1:IO分类 IO分类是针对阻塞与非阻塞,异步与同步来讲…