【GAMES101】作业0学习总结

news2025/2/21 20:11:21

本系列博客为记录笔者在学习GAMES101课程时遇到的问题与思考。

  • GAMES101:课程官网
  • GAMES101:B站视频
  • GAMES101:相关文件下载(百度网盘)

一、环境搭建

以下说明两种环境搭建方法,一种为用原视频所提及的VirtualBox一键搭建环境(但是我的环境下出现了一点问题无法解决),另一种是自建环境(我使用的是VMware软件进行搭建)。

1、VirtualBox搭建

首先下载网盘中的 ym_VirtualBox-6.1.4-136177-Win.exe 文件下载安装VirtualBox软件,再下载网盘中 GAMES101_Ubuntu 18.04.2 (64bit).zip 文件解压出对应的虚拟机映像 GAMES101_Ubuntu 18.04.2 (64bit).vdi ,再按照闫教授作业0中的 pa0.pdf 教程完成虚拟机的创建。

本节就粗略说一下自己遇到的问题:

  • 按照闫教授的教程,创建完虚拟机,安装增强功能之后并进行相应设置之后,还是无法使用文件的拖放功能,每次拖入文件夹时只会创建在虚拟机之中创建一个空的文件夹

我查阅了许多相关资料还是无法解决该问题,不知道是虚拟机设置的问题还是软件安装的时候缺少了某些文件,不过经过测试我发现可以拖入文件,只是无法拖入一整个文件夹,所以我最后的解决方案:

  • 自己手动创建文件夹之后,再手动拖入所有的文件

2、VMware搭建

本次搭建过程参考eine K1eine的博客,再次感谢 eine K1eine的教程!以此记录方便自己下次使用。
首先打开开篇提到的百度网盘,进入自建环境文件夹中,下载其中的所有三个文件:

  1. 虚拟机镜像文件: ubuntu-20.04.1-desktop-amd64.iso
  2. VScode安装文件:code_1.78.2-1683731010_amd64.deb
  3. OpenCV源文件:opencv-4.7.0.tar.gz

然后用该虚拟机镜像创建对应的Ubuntu虚拟机,此处不会的可以参考我之前的博客VMware虚拟机的下载与安装,把其中的第4步的window10镜像修改为本次下载的Ubuntu镜像。

创建完成后将code_1.78.2-1683731010_amd64.debopencv-4.7.0.tar.gz拖入虚拟机的Download文件夹中,并解压opencv-4.7.0.tar.gz文件到当前目录下。
在这里插入图片描述
双击code_1.78.2-1683731010_amd64.deb文件即可将VScode安装至虚拟机中。
随后参考eine K1eine的博客教程,先配置g++、cmake和eigen环境。

  • g++ 配置
     sudo apt-get -y install build-essential   # 安装g++
     g++ --version 					# 安装完成后检查版本
    
  • cmake 配置
    sudo apt-get -y install cmake		#安装cmake
    cmake --version						#照例检查版本
    
  • eigen 配置
    sudo apt-get -y install libeigen3-dev
    

配置完成三件套之后再配置OpenCV,进入刚刚解压完的目录下,右键在此处打开终端,依次输出以下命令

sudo mkdir build
cd build

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 

#通过八线程构建, 你也可以通过修改原来的数字进行构建
sudo make -j8	

sudo make install

接下来配置环境变量

  1. 将库添加到系统路径

    sudo gedit /etc/ld.so.conf
    

    在文件最后一行添加include /usr/local/lib,因为makefile中默认opencv安装在该路径下的

    在这里插入图片描述
    然后进行更新

    sudo ldconfig
    
  2. 配置bash,修改bash.bashrc文件

    sudo gedit /etc/bash.bashrc
    

    在文件最后添加两行

    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    

    如下所示:

    在这里插入图片描述

    保存退出,再更新一下源

    source /etc/bash.bashrc
    

此时相关的环境就配置完成了

二、作业0解答

根据上述闫教授编写的 pa0.pdf 我们可以了解到一些Eigen库中关于向量/矩阵的创建、赋值和运算等操作,这里不熟悉的一定要仔细看一看,不然后面看代码就会一脸懵逼。
听课可知,一个向量可以用(x, y, 0)表示,而一个点可以用(x, y, 1)表示,对于作业0我们只需要先创建一个(2, 1, 1)的点,并按照 课件3:GAMES101_Lecture_03.pdf 中第28页关于旋转的操作编写对应的旋转矩阵即可。
在这里插入图片描述
即:

// rotate
Eigen::Vector3f p(2.0f,1.0f,1.0f);
Eigen::Matrix3f rotate45;
rotate45 << 
    sqrt(2)/2, -sqrt(2)/2, 1,
    sqrt(2)/2, sqrt(2)/2, 2,
    0, 0, 0;
cout << rotate45 * p << endl;

先在 Assignment0中新建build文件夹,后进入该文件夹:
在这里插入图片描述
根据 pa0.pdf 中的内容可知在build文件夹中打开终端后每次编译都需要重新输入

cmake ..
make
./Transformation

所以新建一个run0.sh的脚本,里面的内容就是上面三条命令,这样每次执行只需要执行 run0.sh就行了,在build文件夹中打开终端

touch run0.sh
gedit run0.sh
chmod 777 run0.sh

并在脚本中加入

#/bin/bash
cmake ..
make
./Transformation

保存退出后运行

./run0.sh

若最后出现的结果是这样的,就代表运行正确:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

随笔-涨薪了

突然想起来上个月工资&#xff0c;绩效部分是按照1.01发的&#xff0c;多了10块钱&#xff0c;这也是一年半来第一次涨薪了&#xff0c;就去小龙、小虎我仨的小群里面嘚瑟一下&#xff1a; 我&#xff1a;两年来第一次涨薪&#xff0c;涨了12。 小龙&#xff1a;羡慕。 小虎…

11-CSS-概述、与HTML的结合方式

一、概述 CSS&#xff08;层叠样式表&#xff09;是一种用于控制网页外观和布局的样式语言。它可以独立于 HTML 或 XHTML 文档&#xff0c;以及任何标记语言使用&#xff0c;因此可以用于设计不同类型的文档&#xff0c;如 XML、SVG、XUL 等。CSS 提供了广泛的样式选择器&…

6.Java流在Android中的应用

字节流有哪些? 以输出流为例,输入流除PrintStream外,和输出流是一一对应的 OutputStream ByteArrayOutputStreamPipedOutputStreamFilterOutputStream BufferedOutputStreamDataOutputStreamPrintStream FileOutputStreamObjectOutputStream 使用案例 DataOutputStream dos…

生信刷题之ROSALIND——Part 5 (PERM, PRTM, REVP)

公众号搜索《生信er》&#xff0c;内容更多&#xff0c;更精彩~ 目录 公众号搜索《生信er》&#xff0c;内容更多&#xff0c;更精彩~1、Enumerating Gene OrdersProblemSample DatasetSample OutputexampleCodeOutput 2、Calculating Protein MassProblemSample DatasetSample…

产品经理如何分析业务需求

目录 背景方案一&#xff1a;汇总所有推课的功能二&#xff1a;设置推课机器人的方法三&#xff1a;方法之间的关系四&#xff1a;方法合并五&#xff1a;方法汇总 总结 背景 现在我们开始设计第三版AR***&#xff0c;我负责的部分是推课部分&#xff0c;在领导的一步步引导之…

51单片机(十二)AT24C02(I2C)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

车企招聘高薪车载开发岗位,如何抓住机会进入该领域?

随着智能化、电动化和网联化的趋势不断加强&#xff0c;车载应用正在成为汽车和信息技术产业的一个重要领域。未来的车载应用将会实现智能驾驶、舒适性、智能信息娱乐等领域的创新&#xff0c;为车辆和车主带来更好的用户体验。 从行业来看&#xff0c;车载应用的相关企业不断…

Azkaban学习——单机版安装与部署

目录 1.解压改名 2.修改装有mysql的虚拟机的my.cnf文件 3.重启装有mysql的虚拟机 4.Datagrip创建azkaban数据库&#xff0c;执行脚本文件 5.修改/opt/soft/azkaban-exec/conf/azkaban.properties文件 6.修改commonprivate.properties 7.传入mysql-connector-java-8.0.29…

最简单的helm教程

最简单的Helm教程 学习前置条件 你得了解Kubernetes&#xff0c;拥有实际的使用经验那是最好不过了 Helm是什么&#xff1f; 我们打开Helm的官网&#xff1a;Helm的官网 可以看到官网的第一页就告诉了我们Helm是什么。 **Helm是Kubernetes&#xff08;k8s&#xff09;的包…

第十二届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十二届蓝桥杯青少组省赛Python真题 一、选择题 第 1 题 单选题 设s="Hello Lan Qiao,执行print(s[4:11])输出的结果为 () 答案:D 第 2 题 单选题 循环语句for iin range (8,4,2) : 执行了几次循环 ()

进腾讯了,38k....

大家好&#xff0c;最近有一位老同学成功去了腾讯&#xff0c;特意找他要了一些面试相关的资料&#xff0c;内容涵盖测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等质量非常高&#xff01;&…

SM2椭圆曲线公钥密码算法--密钥对与数字签名

1. SM2国密算法介绍 SM2算法全称是SM2椭圆曲线公钥密码算法&#xff08;SM是商用密码的拼音缩写&#xff09;&#xff0c;是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年&#xff0c;SM2成为中国国家密码标准。 在商用密码体系中&#xff0c;SM2主要用…

超详细,多图 PVE 安装 OpenWRT 教程(个人记录)

前言 - 写这个的目的是因为本人健忘所以做个记录以便日后再折腾时查阅。 - 本人笔拙如有选词&#xff0c;错字&#xff0c;语法&#xff0c;标点错误请忽视&#xff0c;大概率不会修改&#xff0c;我自己能看懂就好。 - 内容仅适用于本人的使用环境&#xff0c;不同环境请忽…

Java --- redis7之布隆过滤器BloomFilter

目录 一、布隆过滤器BloomFilter 1.1、面试题 1.2、 布隆过滤器简介 1.2.1、设计思想 1.3、特点 1.4、布隆过滤器原理 1.4.1、实现原理与数据结构 1.4.2、添加key、查询key 1.4.3、hash冲突导致数据不精准 1.4.4、三步骤 1.4.5、布隆过滤器误判&#xff0c;为什么不…

使用ncnn在树莓派4B上部署nanoDet-m网络(12fps)

1. 背景 在机器人的应用中&#xff0c;目标检测是一个重要的课题。深度学习的快速发展&#xff0c;在检测的效果方面对比大多数传统检测算法&#xff0c;都有明显的优势。但是将深度学习模型部署到端侧设备上&#xff0c;实现高效的推理&#xff0c;同样是一个问题很多的领域。…

1099 Build A Binary Search Tree(超详细注解+38行代码)

分数 30 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the nodes key.The right subtree…

Word+ChatGPT,一分钟完成周报总结作文

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 Office 的办公软件Word&#xff0c;是我们日常的文字工作的阵地。与ChatGPT的文字生成…

自学黑客【网络安全】,一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我一直强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且实际向安全过渡后可用到的关键…

6 # 实现简单的 promise

什么是 Promise &#xff1f; 在 JavaScript 中&#xff0c;Promise 是一种用于处理异步操作的对象&#xff0c;它可以更加优雅地处理回调函数嵌套和错误处理。 promise es6已经内部实现了&#xff0c; ie 不兼容 promise&#xff0c;需要 polyfill &#xff08;比如&#xf…

C++学习记录——이십이 红黑树

文章目录 1、了解概念2、模拟实现1、插入2、插入代码3、测试是否是红黑树 3、封装map、set 1、了解概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结…