zoukankan      html  css  js  c++  java
  • 计算机图形学笔记-坐标变换

    坐标系

    本体坐标系(右):为了描述基本的形体而引入的坐标系
    用户坐标系(右):用户引入描述整个形体的坐标系
    观察坐标系(左):作为观察姿态而引入,观察者所处的位置,因为Z轴冲着眼睛的方向
    设备坐标系:显示器的坐标系
    规范化设备坐标系:与具体设备无关的坐标系
    X手系,用手从X轴向Y轴转,看看Z轴是否对应拇指即可

    变换

    [p^{'}=left[egin{matrix}end{matrix} ight] ]

    平移变换T

    [p^{'}=left[egin{matrix} x^{'}&y^{'}&1 end{matrix} ight]=left[egin{matrix}x&y&1end{matrix} ight]left[egin{matrix} 1&0&0\ 0&1&0\ T_x&T_y&1\ end{matrix} ight] ]

    比例变换S

    [p^{'}=left[egin{matrix} x^{'}&y^{'}&1 end{matrix} ight]=left[egin{matrix}x&y&1end{matrix} ight]left[egin{matrix} S_x&0&0\ 0&S_y&0\ 0&0&1\ end{matrix} ight] ]

    旋转变换R

    [p^{'}=left[egin{matrix} x^{'}&y^{'}&1 end{matrix} ight]=left[egin{matrix}x&y&1end{matrix} ight]left[egin{matrix} cos heta&sin heta&0\ -sin heta&cos heta&0\ 0&0&1\ end{matrix} ight] ]

    按照阅读顺序记忆,cos,sin,-sin,cos
    矩阵连乘时要从左向右乘

    对称变换

    [p^{'}=left[egin{matrix} x^{'}&y^{'}&1 end{matrix} ight]=left[egin{matrix}x&y&1end{matrix} ight]left[egin{matrix} a&d&0\ b&e&0\ 0&0&1\ end{matrix} ight] ]

    关于Y=-X对称

    [left[egin{matrix} 0&-1&0\ -1&0&0\ 0&0&1\ end{matrix} ight] ]

    错切变换,沿X轴方向关于Y的错切

    [p^{'}=left[egin{matrix} x^{'}&y^{'}&1 end{matrix} ight]=left[egin{matrix}x&y&1end{matrix} ight]left[egin{matrix} 1&0&0\ b&1&0\ 0&0&1\ end{matrix} ight]=left(egin{matrix}x+by&y&1end{matrix} ight) ]

    关于X的错切

    [left(egin{matrix}x+by&y&1end{matrix} ight) ]

    平移、旋转、比例、错切都属于拓扑不变的几何变换。

    视见变换
    我理解的是游戏是一个窗口,然后屏幕的某块区域用来运行游戏,所以需要现平移到原点,在进行缩放,然后移回去,就是视见变换。

    [H=T_1(-wxl,-wyl)*S(S_x,S_y)*T_2(vxl,vyl)\ =left[egin{matrix} 1&0&0\ 0&1&0\ -wxl&-wyl&1\ end{matrix} ight]left[egin{matrix} frac{vxh-vxl}{wxh-wxl}&0&0\ 0&frac{vxh-vxl}{wxh-wxl}&0\ 0&0&1\ end{matrix} ight]left[egin{matrix} 1&0&0\ 0&1&0\ vxl&vyl&1\ end{matrix} ight] ]

    三维旋转变换
    记忆法:绕哪个轴旋转,它的右下一格(如果到达界限就轮转)为起始点,cos sin -sin cos这样就可以了
    旋转的逆变换只需要把sin位置的数字取反就行了,cos不变

    等轴投影
    投影平面的法向量与三个轴的夹角都相等。

  • 相关阅读:
    nodejs设置NODE_ENV环境变量(2)
    CentOS6.8系统安装Node
    mongodb3.X权限配置
    在centos7中添加一个新用户并授权
    CentOS 7.0启用iptables防火墙
    Nginx编译参数大全 configure参数中文详解
    Linux(centos)系统各个目录的作用详解
    CentOS 6.5_X64下安装MongoDB数据库
    vue-cli 发布(译)
    Linux下的crontab定时执行任务命令详解
  • 原文地址:https://www.cnblogs.com/Tony100K/p/11606752.html
Copyright © 2011-2022 走看看