当前位置: 首页 > news >正文

图形学中的二维变换与齐次坐标

本文整理了图形学中常见的二维变换方式,并介绍了齐次坐标的引入及其意义,帮助你理解如何将所有变换统一为矩阵乘法形式。


1. 缩放变换

1.1 均匀缩放

\[(x', y') = s(x, y) \]

矩阵形式:

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

1.2 非均匀缩放(\(s_x \ne s_y\)

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]


2. 对称 / 反射变换

2.1 沿 Y 轴翻转(镜像)

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

效果:X 坐标取反,Y 坐标保持不变。

2.2 沿 X 轴翻转

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

效果:Y 坐标取反,X 坐标保持不变。

2.3 关于原点对称(中心对称)

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} -1 & 0 \\ 0 & -1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

效果:X、Y 坐标同时取反。

2.4 关于直线 \(y=x\) 对称

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

效果:交换 X、Y 坐标。


3. 切变(Shear)

1

例如:保持 \(y\) 坐标不变,进行 \(x\) 方向切变:

\[x' = x + a y, \quad y' = y \]

矩阵形式:

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]


4. 旋转变换

2
默认绕原点逆时针旋转角度 \(\theta\)

\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \]

推导时可代入单位向量 \((1,0)\)\((0,1)\)


5. 齐次坐标与平移变换

3

平移不是线性变换,无法用 \(2 \times 2\) 矩阵表示。
4

为了解决这个问题,引入齐次坐标,将二维点 \((x, y)\) 扩展为三维向量 \((x, y, 1)\)

5.1 齐次坐标表示

二维点:

\[(x, y) \to \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} \]

二维向量:

\[(x, y) \to \begin{bmatrix} x \\ y \\ 0 \end{bmatrix} \]

5.2 平移矩阵(齐次形式)

\[\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x + t_x \\ y + t_y \\ 1 \end{bmatrix} \]


6. 点与向量的运算规则

运算 结果 说明
向量 + 向量 向量 方向叠加
点 − 点 向量 得到方向
点 + 向量 平移位置
点 + 点 无几何意义,但齐次坐标下可解释为中点

齐次坐标下:

\[A = (a_x, a_y, 1), \quad B = (b_x, b_y, 1) \]

则:

\[A + B = (a_x + b_x, a_y + b_y, 2) \]

归一化后得到中点:

\[\left( \frac{a_x + b_x}{2}, \frac{a_y + b_y}{2}, 1 \right) \]


7. 仿射变换统一表示

5

所有变换(缩放、旋转、切变、对称、平移)都可以统一写成:

\[\text{变换结果} = \text{变换矩阵} \times \text{齐次坐标向量} \]

这就是仿射变换的核心思想。


8. 逆变换与变换顺序

8.1 逆变换

6
由一个位置经过矩阵M到另一个位置,再从另一个位置回到最初位置的矩阵称为M的逆

8.2变换顺序

例如:先旋转 \(45^\circ\),再向右平移 1 个单位。
变换矩阵为:
7

应用顺序是从右到左:先旋转,再平移。

8

注意:矩阵乘法没有交换律!


9. 绕任意点旋转的分解

9

若要绕点 \(P(x_0, y_0)\) 旋转:

  1. \(P\) 平移到原点
  2. 执行旋转
  3. 再将结果平移回 \(P\) 的位置

10. 三维齐次坐标

三维点 \((x, y, z)\) → 齐次坐标:

\[(x, y, z, 1) \]

三维向量:

\[(x, y, z, 0) \]

齐次坐标表示的实际点为:

\[\left( \frac{x}{w}, \frac{y}{w}, \frac{z}{w} \right), \quad w \ne 0 \]

三维空间中的变换与二维类似,统一为:

\[\text{变换结果} = 4 \times 4 \text{矩阵} \times \text{齐次坐标} \]


http://www.jsqmd.com/news/451099/

相关文章:

  • Cogito-V1-Preview-Llama-3B快速入门:Ubuntu 20.04系统下的环境部署详解
  • 解决光学设计效率难题的Inkscape光线追踪扩展:从概念到实验的全流程工具
  • JAVA学习2 抽象类和接口
  • 快速原型设计:用快马AI一键搭建502错误模拟演示环境
  • NumPy 函数手册:随机数生成器(Generator)
  • Qwen3-Reranker-0.6B与爬虫系统集成实战
  • Flutter 三方库 leancode_contracts_generator 的鸿蒙化适配指南 - 掌控契约生成资产、精密工程治理实战、鸿蒙级架构专家
  • 2026装修设计新趋势:全屋智能家居引领未来生活新体验,精装房设计/房屋设计/别墅设计/独立设计师,装修设计推荐怎么选择 - 品牌推荐师
  • 医疗数据差分隐私落地失败的7个隐性雷区,第4个连资深算法总监都踩过(附可审计的Python日志埋点方案)
  • 保姆级教程:WAN2.2文生视频+SDXL风格,手把手教你做商品展示视频
  • 客服智能体大模型选型指南:从效率提升视角解析主流预训练模型
  • 手把手教你用DolphinScheduler补数:从配置到实例监控的全流程演示
  • 别墅设计全流程揭秘:2026年如何确保设计顺利落地,别墅设计/室内设计/装修/民宿设计/精装房,别墅设计多少钱口碑推荐榜 - 品牌推荐师
  • Python开发者必看:在UOS/Debian/Ubuntu上打包Python应用为deb的完整指南(附常见错误排查)
  • MusePublic Art Studio在设计师工作流中的应用:替代PS初稿生成
  • Qwen-Image-2512-ComfyUI新手避坑指南:CUDA版本选对,部署一次成功
  • Qwen3-ASR-1.7B效果展示:上海话戏曲唱段+伴奏分离后语音识别准确率实测
  • 3步构建创新型编程教育平台:高效赋能未来开发者培养
  • lite-avatar形象库效果展示:教师数字人板书+讲解+表情三位一体教学演示
  • OFA图像描述模型Matlab接口调用教程:科研场景下的图像分析集成
  • Qwen-Image-2512-Pixel-Art-LoRA部署教程:Docker Compose一键启停像素艺术服务
  • GLM-OCR保姆级教程:3步搭建本地文档识别服务,小白也能搞定
  • 掌控消息:RevokeMsgPatcher让微信QQ聊天记录永不消失的秘密
  • 实测Qwen3-4B:256K长文本模型写出的代码质量有多高?
  • DAMO-YOLO手机检测详细步骤:Gradio界面响应超时(timeout)参数调优
  • ai辅助c语言学习:让快马智能助手解释代码与生成算法示例
  • 基于大语言模型的AI智能客服系统实战:从架构设计到性能优化
  • BEYOND REALITY Z-Image部署优化:使用Keil5进行嵌入式开发
  • 实战演练:基于快马平台开发YOLOv8视频流安全监控与区域入侵检测系统
  • SeqGPT-560M入门指南:如何评估自定义字段定义的合理性与覆盖度