Games101-现代计算机图形学作业- 作业 0

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;

结果

留下评论