目录
C++属性页复用
打开属性管理器,建立一个通用的属性页面,避免每次作业都需要重新布置 静态/动态链接库
新建一个属性页,将属性设置好
建立一个控制台作业0,然后在属性页选择添加现有属性,即可复用设置的库文件
作业描述
作业要点
C++ 中sin cos的表示:C++ 三角函数运算使用弧度制 角度与弧度的转换: π=180°,多少度就是π对应的比例。 弧度/π=角度/180° C++中,没有π,可以用π = acos(-1),也可以直接3.141592653589,前者double双精度浮点数,除非后者写的更多(超过15位,float?double?long double?),否则前者精度更高(double双精度,小数点后15位) 弧度制计算sin cos 整数度加 .0 否则计算错误, 错误:cos((45 / 180 * acos(-1))) 正确:cos((45.0 / 180.0 * acos(-1))) 数学中:沿逆时针方向旋转生成的角规定为正角;沿顺时针方向旋转生成的角则规定为负角 所以逆时针45度 用 45表示 point 和vector的区别 0 ,1 搞错了也会得到错误的结果(比如平移失效) point 齐次坐标表示, 2维齐次坐标用Vector3, 三维用Vector4 point 最后一位是1 vector 最后一位是0
定义一个齐次坐标表示的点(2,1,1),根据其次坐标变换计算出变换矩阵,
然后点乘即可,C++中point 变换需要左乘矩阵,右乘会报错,因为Eigen Vector3f 初始化后默认是列向量,因此需要左乘矩阵
参考代码
#include<cmath>
#include <Eigen/Eigen>
#include<iostream>
using namespace std;
using Eigen::Vector3f;
float Cos(float value)
{
return cos((value / 180.0 * acos(-1)));
}
float Sin(float value)
{
return sin((value / 180.0 * acos(-1)));
}
/*
* PA 0
*/
// TO DO: Define point P
cout << "作业0 \n";
Vector3f point=Vector3f(2.0,1.0,1.0);
// TO DO: Define rotation matrix M
Eigen::Matrix3f transForm;
transForm <<
Cos(45.0), -Sin(45.0), 1,
Sin(45.0), Cos(45.0), 2,
0, 0, 1;
// TO DO: M * P
auto result = transForm* point;
cout << result;
return 0;
结果