GAMES101_pa0_Homework

文章介绍了齐次坐标在图形学中的应用,它能统一表示线性变换和平移。给定点P(2,1),首先通过逆时针旋转45度,然后平移(1,2),利用Eigen3库的矩阵运算求得变换后的坐标。代码示例展示了如何使用齐次坐标和矩阵进行这一过程。

提示:文章内容仅供参考,不保证正确


GAMES101—PA0

齐次坐标的应用,图形学入门的开始

一、齐次坐标系(Homogeneous Coordinates)是什么?

将线性变换+平移统一的一种坐标关系。
可以用一个变换矩阵表示一个Points的任意运动。

线性变换

  • 缩放变换
    在这里插入图片描述

  • 镜像变换
    在这里插入图片描述

  • 错切变换
    在这里插入图片描述

  • 旋转
    在这里插入图片描述

平移

在这里插入图片描述

齐次坐标系的各变换

在这里插入图片描述

二、作业描述

给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出
变换后点的坐标(要求用齐次坐标进行计算)。

#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>

const double PI = 1.0/4.0 * std::acos(-1);

int main(){
    // P(1, 2) Rotation counterclockwise 45 + T(1 , 2)
    std::cout << "P(2,1) Transformation" << std::endl;
    Eigen::Vector3f P(2.0f, 1.0f, 1.0f);
    Eigen::Matrix3f R, T;
    R <<  cos(PI), -sin(PI), 0.0, sin(PI), cos(PI), 0.0, 0.0, 0.0, 1.0;
    T << 1.0, 0.0, 1.0, 0.0, 1.0, 2.0, 0.0, 0.0, 1.0;
    std::cout << P  << '\n' <<  R << '\n' << T << std::endl;
    // Transformation
    std::cout << T * R * P << std::endl;
    return 0;
}

总结

简单记录一下GAMES101的作业情况,有问题直接留言交流。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值