games101_Homework0
给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45 ◦,再平移 (1,2), 计算出 变换后点的坐标(要求用齐次坐标进行计算)。
作业解答:
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream> int main(){
// define point in Homogeneous Coordinates
Eigen::Vector3f res(2.0f, 1.0f, 1.0f);
// define Affine Transformations Matrix
// Translate then Rotate
Eigen::Matrix3f Rota_aff;
Rota_aff << cos(45.0/180.0*acos(-1)), -sin(45.0/180.0*acos(-1)), 0,
sin(45.0/180.0*acos(-1)), cos(45.0/180.0*acos(-1)), 0,
0, 0, 1;
Eigen::Matrix3f Tran_aff;
Tran_aff << 1.0, 0.0, 1.0,
0.0, 1.0, 2.0,
0.0, 0.0, 1.0;
std::cout << Tran_aff*Rota_aff*res << std::endl;
return 0;
}
作业解析:二维点的齐次坐标表示可以用三维向量概况(即最后一位为1),然后使用先旋转再平移的规则将二维坐标点依次左乘旋转矩阵和平移矩阵。
此外旋转矩阵(逆时针旋转a度)即 m3(cosa, -sina, 0)(sina, cosa, 0)(0, 0, 1),平移矩阵(沿x轴平移a,沿y轴平移b)即 m3(1, 0, a)(0, 1, b)(0, 0, 1)。
注:如示例代码,在进行点位运算时尽量使用float,此外sin与cos函数的传入值需为弧度,弧度45度即为45.0/180.0*acos(-1) 公式为:弧度 = 角度 / 180 * pi
随机推荐
- 手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)
0. MINIGUI MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明 ...
- 模板链表类的扩展(QListEx<T>)
以前写的链表都是比较简单的,插入节点是在头节点上,所以循环链表时都是从最后一个数据往前找的,给人的感觉是倒着的, 今天写一个在链表尾部插入数据 1.链表节点类的定义 /链表节点类 template & ...
- java_GUI2
package GUi;import java.awt.*;public class GuI2 { public static void main(String[] args) { MyFrame n ...
- c# 复制文件夹内所有文件到另外一个文件夹
/// <summary> /// 开始转移 /// </summary> /// <param name="sender"></para ...
- 修改SpringBoot的配置文件application.yaml后启动失败
经常碰到修改application.yaml文件之后,SpringBoot项目启动失败的,报错信息如下 Connected to the target VM, address: '127.0.0.1: ...
- 巧用PDF转Markdown插件,在扣子(Coze)手搓一个有趣好玩的AI Bot
近期,TextIn团队开发的PDF转Markdown插件已经上架Coze平台. 短短的时间内,已经有不少朋友愉快地和我们的工具开始玩耍.今天我们抛砖引玉,介(an)绍(li)几种PDF转Markdow ...
- PYRAFORMER: 用于长时间序列建模和预测的低复杂度金字塔注意力《PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTENTION FOR LONG-RANGE TIME SERIES MODELING AND FORECASTING》(金字塔注意力模块机制、PAM、CSCM、多尺度)
今天是2022年10月1日,今天重读一遍这篇论文. 10月1日16:48,上次读是4月20日,时间过得好快. 论文:PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTEN ...
- CSS – Display block, inline, inline-block
前言 之前 W3Schools 学习笔记就有提到了 CSS Layout - The display Property 这篇做更多的解释. 参考: CSS Display FLEX vs Block, ...
- AJAX——简介
AJAX 同步与异步 AJAX 快速入门
- map&unordered_map<key,value>key使用自定义类的要求
std::unordered_map 的键要求: std::unordered_map 是基于哈希表的数据结构. 它要求键类型必须支持哈希计算,也就是必须有对应的 std::hash 函数. 另外,键 ...