图形学入门合集1

article/2025/8/8 12:31:11

Games101作业0

1虚拟机的使用

1.1虚拟机的安装

	这里我们使用 Oracle VM VirtualBox 虚拟机。如果你使用 Windows 系统,你可以直接下载[链接](https://download.virtualbo%20%09%09x.org/virtualbox/6.1.4/VirtualBox-6.1.4-136177-Win.exe),下载完成后按照指示完成安装。如果你使用 Mac OS 系统,你可以直接下载[链接](https://download.virtualbo%20%09%09x.org/virtualbox/6.1.4/VirtualBox-6.1.4-136177-OSX.dmg),下载完成后按照指示完成安装。如果你使用 Linux 内核的系统,你可以查看[链接](https://www.virtualbox.org/w%20%09%09iki/Linux_Downloads),找到你使用的系统,按照对应的指示完成安装。		

1.2 下载虚拟硬盘

	由于Assignment0中给出的清华云已经不存在了,所以在论坛的百度云链接下载[链接](https://games-cn.org/forums/forum/graphics-intro/)

1.3配置虚拟机

打开 Virtual Box,点击新建,设置类型为 Linux,版本为 Ubuntu-64 bit,
建议设置虚拟机的内存大小为 2GB,然后选择使用已有的虚拟硬盘文件,设置为2之前解压得到的 GAMES101_Ubuntu 18.04.2 (64bit).vdi,最后点击创建就完成了虚拟机的配置工作。之后就可以使用创建好的虚拟机了,选中刚刚创建好的虚拟机,点击右侧上方的启动按钮就可以打开虚拟机了,Ubuntu 系统的密码为 Ilovegraphics。
但是我在使用过程中会经常黑屏(最后我将显存拉至最大)

链接

1.4 安装 Guest Additions

进入系统后,点击上方菜单的设备,点击安装增强功能,如下图所示。安装完成后,重启虚拟机系统就完成了 Guest Additions 的安装。
如果上面的方法安装失败了,可以使用 ctrl+alt+t 调出终端,使用如下命令安装 Guest Additions 功能。
	sudo mkdir –p /media/cdromsudo mount -t auto /dev/cdrom /media/cdrom/cd /media/cdrom/sudo sh VBoxLinuxAdditions.run
执行完毕后,重启虚拟机系统就完成了 Guest Additions 的安装。

2作业框架

我首先看了eigen的官网文档[链接](http://eigen.tuxfam%20ily.org.)
#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>int main(){// Basic Example of cppstd::cout << "Example of cpp \n";float a = 1.0, b = 2.0;std::cout << a << std::endl;std::cout << a/b << std::endl;std::cout << std::sqrt(b) << std::endl;std::cout << std::acos(-1) << std::endl;std::cout << std::sin(30.0/180.0*acos(-1)) << std::endl;// Example of vectorstd::cout << "Example of vector \n";// vector definitionEigen::Vector3f v(1.0f,2.0f,3.0f);Eigen::Vector3f w(1.0f,0.0f,0.0f);// vector outputstd::cout << "Example of output \n";std::cout << v << std::endl;// vector addstd::cout << "Example of add \n";std::cout << v + w << std::endl;// vector scalar multiplystd::cout << "Example of scalar multiply \n";std::cout << v * 3.0f << std::endl;std::cout << 2.0f * v << std::endl;// Example of matrixstd::cout << "Example of matrix \n";// matrix definitionEigen::Matrix3f i,j;i << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0;j << 2.0, 3.0, 1.0, 4.0, 6.0, 5.0, 9.0, 7.0, 8.0;// matrix outputstd::cout << "Example of output \n";std::cout << i << std::endl;// matrix add i + j// matrix scalar multiply i * 2.0// matrix multiply i * j// matrix multiply vector i * v/* * PA 0*/// TO DO: Define point P// TO DO: Define rotation matrix M// TO DO: M * Preturn 0;
}

3 作业描述与提交

3.1 作业描述

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

3.2 编译

为方便之后的作业编写,本次作业要求使用 cmake 进行编译。
首先,编写好本次作业的程序 main.cpp。
然后, 在 main.cpp 所在目录下,打开终端 (命令行),依次输入:
• mkdir build: 创建名为 build 的文件夹。
• cd build: 移动到 build 文件夹下。
• cmake ..: 注意其中’..’ 表示上一级目录,若为’.’ 则表示当前目录。
• make: 编译程序,错误提示会显示在终端中。
• ./Transformation:若上一步无错误,则可运行程序 (这里的 Transformation
为可执行文件名,可参照 CMakeLists.txt 中修改)。

3.3代码如下

#include<cmath>
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>
#include<math.h>
int main(){Eigen::Vector3d p(2,1,1);std::cout<<"please put in the rotation angelindegrees"<<std::endl;double angleIndegrees;double angleInradians;std::cin>>angleIndegrees;angleInradians=(angleIndegrees*M_PI)/180;std::cout<<"please put in the moving point";int x,y;std::cin>>x>>y;Eigen::Matrix3d matrix1,matrix2;matrix1<<cos(angleIndegrees),-sin(angleIndegrees),0,sin(angleIndegrees),cos(angleIndegrees),0,0,0,1;matrix2<<1,0,x,0,1,y,0,0,1;std::cout<<matrix2*(matrix1*p)<<std::endl;}

3.4运行结果

运行结果


http://chatgpt.dhexx.cn/article/yxyh2FKq.shtml

相关文章

Recorder︱图像特征检测及提取算法、基本属性、匹配方法

在做图像的研究&#xff0c;发现对图像本质、内核以及可以提取的特征方式一点儿都不懂&#xff0c;赶紧补补课。 . 一、图像常用属性 本节指的是一般来说&#xff0c;图像处理的一些角度&#xff0c;也是根据一些美图软件最为关注的一些图像属性&#xff1a; 基本属性&#…

视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示

专栏系列文章如下&#xff1a; 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和E…

多视图几何三维重建实战系列之MVSNet

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 1. 概述 MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术&#xff0c;传统方法利用几何、光学一致性构造匹配代价&#xff0c;进行匹配代价累积&#xff0c;再估计深度值。虽然传统方法有较…

一文搞懂NSCT(Nonsubsampled Contourlet)变换,matlab程序实现并讲解NSCT_TOOLBOX的使用方法

文章目录 一、前言二、NSCT理论背景三、NSCT图像表述3.1 图像变换综述3.2 非下采样的金字塔分解3.2 非下采样的方向滤波器组分解 四、NSCT的matlab程序实现五、总结5.1 NSCT现存不足5.2 致谢 一、前言 在这篇文章中我将从图像分解领域的发展方面为大家讲解NSCT的出现背景和实现…

视图几何三维重建实战系列之MVSNet

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 1. 概述 MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术&#xff0c;传统方法利用几何、光学一致性构造匹配代价&#xff0c;进行匹配代价累积&#xff0c;再估计深度值。虽然传统方法有较…

[模板匹配霍夫变换]——模板匹配分析、霍夫变换分析

一、模板匹配分析 所谓模板匹配&#xff0c;就是在给定的图片中查找和模板最相似的区域&#xff0c;该算法的输入包括模板和图片&#xff0c;整个任务的思路就是按照滑窗的思路不断的移动模板图片&#xff0c;计算其与图像中对应区域的匹配度&#xff0c;最终将匹配度最高的区域…

计算机视觉学习第5章——多视图几何

目录 一、 外极几何 1.1 简单数据集 1.2 用Matplotlib绘制三维数据 1.3 计算F&#xff1a;八点法 1.4 外极点和外极线 二、照相机和三维结构的计算 2.1 三角部分 2.2 由三维点计算照相机矩阵 2.3 由基础矩阵计算照相机矩阵 三、多视图重建 3.1 稳健估计基础矩阵 …

Python计算机视觉——多视图几何

文章目录 第五章 多视图几何5.1 外极几何5.1.1 一个简单的数据集5.1.2 用Matplotlib绘制三维数据5.1.3 计算F&#xff1a;八点法5.1.4 外极点和外极线 5.2 照相机和三维结构的计算5.2.1 三角剖分5.2.2 由三维点计算照相机矩阵5.2.3 由基础矩阵计算照相机矩阵 5.3 多视图重建5.3…

curvelet变换的理解

一、matlab下curvelet工具包配置 首先在curvelet官方网站下载curvelet工具包&#xff0c;解压&#xff0c;其中包含了matlab与C语言两种实现的版本。 打开matlab&#xff0c;点击set path&#xff0c;选择“添加并包含子文件夹”&#xff0c;将有关的matlab代码&#xff0c;即…

java几何画板_geogebra几何画板下载

geogebra几何画板官方版是一款功能十分强大、非常专业的理科几何绘制工具&#xff0c;使用geogebra几何画板官方版您可以在上面画点、向量、线段、直线、多边形、圆锥曲线&#xff0c;甚至是函数以图像的形式呈现到您眼前。geogebra几何画板最新版是款非常不错的软件。 基本简介…

如何远程连接SQL Server数据库

一.设置客户端网络实用工具 点击“开始”&#xff0d;“程序”&#xff0c;在“Microsoft SQL Server”菜单中选择“客户端网络实用工具”。 在“别名”选项中点击“添加”。 在“服务器别名”中&#xff0c;填入您网站域名&#xff0c;在“网络库”区域中点击“TCP/IP”,在…

连接远程Mysql数据库

一、运行环境 数据库&#xff1a;Mysql 数据库所在系统&#xff1a;Linux(Ubuntu) IDE&#xff1a;PyCharm 测试环境&#xff1a;windows10 二、相关配置 1. 切换root用户权限 >> sudo -s2. 修改数据库配置 >> sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #…

如何配置SQL Server数据库远程连接

本地数据库&#xff08;SQL Server 2012或以上&#xff09; 连接外网服务器的数据库&#xff0c;外网的服务器端需要做如下配置&#xff1a; 1、首先是要打开 数据的配置管理工具 2、配置相关的客户端协议&#xff0c;开启TCP/IP 3、数据库默认的远程端口是 1433&#xff08;不…

远程连接服务器MySQL数据库

1.添加腾讯云安全组规则的MySQL 3306端口&#xff0c;设置相应的安全组规则。 规则设置&#xff0c;例如 2.参考另一篇博客。。。mysql数据库开启远程访问 设置完权限后 3.mysql配置my.cnf 是否不允许外网访问 [rootVM_71_45_centos ~]# vim /etc/my.cnf 找到里面bind-addre…

如何连接远程服务器上的数据库

远程服务器上切换root权限&#xff1a;sudo su root 远程服务器上检查防火墙是否对外开放3306端口&#xff1a;firewall-cmd --query-port3306/tcp 若为false则命令行开放端口&#xff1a;firewall-cmd --add-port3306/tcp 本地再次检查端口是否开放成功&#xff1a;telnet &l…

数据库远程连接

需求介绍 本地项目是SpringBoot项目要连接远程windows服务器上的mysql数据库。 实现步骤 1. 在windows服务器上下载与配置MySQL 1.1下载MySQL 可以在本地下载好后复制到远程服务器上&#xff0c;我是这样干的&#xff0c;服务器上下载太慢了 1.2配置MySQL 配置MySQL是为了…

远程连接sql数据库

[注] up使用sql 2012数据库较多&#xff0c;在这里就拿sql数据库来举例&#xff0c;其他的应该是类比。远程登录时建议使用sa登录&#xff0c;或者新建一个用户去登录sql&#xff08;网站参考过一些博主&#xff0c;基本都是用sa或者其他用户名登录&#xff09;。 1、sql数据的…

Mysql 连接远程数据库

一、改表 首先将mysql数据库中的user表中的数据看一下 select host,user from mysql.user; 可以看到root用户只允许localhost登录 我们需要更改一下 update mysql.user set host‘%’ where user‘root’; 更改好了之后再次查看发现已经变了&#xff0c;但是需要注意的是这种方…

java连接远程服务器上的数据库(MySQL)

1. 服务器上的准备工作 Linux服务器上下载并安装mysql服务 输入命令安装mysql服务:#yum install mysql-server即可联网安装mysql服务器输入指令开启mysql服务:#service mysqld start初始化mysql:#mysql_secure_installation接下来的一连串指令只要按照提示输入 y/n并且配置好密…