【GAMES101闫令琪图形学】作业0(配置开发环境)

2023-11-12

games101往期作业汇总帖下载作业0的压缩包。作业0是让你配环境的,很简单。

操作系统:VirtualBox虚拟机,Ubuntu20.04(比课程提供的虚拟硬盘版本更高!)

安装eigen和cmake
sudo apt-get install libeigen3-dev
sudo apt-get install cmake
cmake -version // 2022年2月10日:3.16.3

如果你的代码引用头文件时写了#include <Eigen/Dense>,那么还需要把Eigen下的所有文件和子目录复制到/usr/include。

sudo cp -r /usr/include/eigen3/Eigen /usr/include

参考:https://www.cnblogs.com/lihanwen/p/9928063.html

安装make

参考:https://www.cnblogs.com/kongbursi-2292702937/p/14863515.html

sudo apt-get update
sudo apt-get install ubuntu-make
sudo apt-get install make
安装gcc
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gcc-multilib

注意makefile要求先安装gcc,而gcc如果没安装gcc-multilib就算没安装完全

编译运行
代码(main.cpp)
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Dense>
#include <iostream>
#include <cmath>
using namespace std;

double deg2rad (double v) {
    return v / 180.0 * M_PI;
}

void demos() {
    // Basic Example of cpp
    cout << "Example of cpp \n";
    float a = 1.0, b = 2.0;
    cout << a << endl;
    cout << a / b << endl;
    cout << sqrt (b) << endl;
    cout << M_PI << endl;
    cout << sin (deg2rad (30.0) ) << endl;

    // Example of vector
    cout << "Example of vector \n";
    // vector definition
    Eigen::Vector3f v (1.0f, 2.0f, 3.0f);
    Eigen::Vector3f w (1.0f, 0.0f, 0.0f);
    // vector output
    cout << "Example of output \n";
    cout << v << endl;
    // vector add
    cout << "Example of add \n";
    cout << v + w << endl;
    // vector scalar multiply
    cout << "Example of scalar multiply \n";
    cout << v * 3.0f << endl;
    cout << 2.0f * v << endl;

    // Example of matrix
    cout << "Example of matrix \n";
    // matrix definition
    Eigen::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 output
    cout << "Example of output \n";
    cout << i << endl;
    // matrix add i + j
    // matrix scalar multiply i * 2.0
    // matrix multiply i * j
    // matrix multiply vector i * v
    cout << j << endl;
    cout << (i * j) << endl;
}

void solve() {
    Eigen::Vector3d v (2.0, 1.0, 1.0);
    Eigen::Matrix3d rot, transform;
    // 绕原点逆时针转45°
    const double r = deg2rad (45);
    rot << cos (r), -sin (r), 0, \
        sin (r), cos (r), 0, \
        0, 0, 1;
    // 平移(1,2)
    transform << 1, 0, 1, \
              0, 1, 2, \
              0, 0, 1;
    v = rot * v;
    cout << "after rotate: " << v << endl;
    v = transform * v;
    cout << "after transform: " << v << endl;
}

int main() {
    demos();
    solve();
    return 0;
}

参考pa0.pdf给的命令即可,我这里很顺利。

mkdir build
cd build
cmake ..
make
./Transformation
  • 前两条命令是在项目根目录下执行的,后3条命令都是在项目根目录/build下执行的。显然后续再编译,从第3条命令开始即可。
  • build文件夹大小1MB左右,好大,让人难过。
  • 为什么可执行文件名叫Transformation?这个文件名是在CMakeLists.txt的add_executable中指定的。

作者:hans774882968

本文链接:https://blog.csdn.net/hans774882968/article/details/122858892

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【GAMES101闫令琪图形学】作业0(配置开发环境) 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • c语言求斐波那契数列n项以及前n项和

    斐波那契数列的定义 f n f n 1 f n 2 n gt 1 n 0 f 0 0 n 1 f 1 1 自定义函数 递归写法 fbi 此函数求x项的斐波那契数 int fbi int x 斐波那契 if x lt 0 return 0 e
  • 支付场景的测试用例

    功能测试 1 是否可以正常支付 2 支付金钱的最大值 最小值 错误金额 3 支付中断继续支付是否成功 4 支付中断后结束支付 5 支付中断结束后再一次支付 兼容性 1 pc端 手机端 平板电脑 安全性 1 姓名会不会显示给对方 2 对方账户
  • 信息系统项目管理师第七章-----项目管理一般知识

    考察知识点 项目管理概述 项目的属性 项目管理的特征 项目管理的知识体系 项目生命周期 项目生命周期的特点 阶段的划分 产品生命周期与项目生命周期的关系 项目的组织方式 职能型 项目型 矩阵式 总结 相关术语解析 项目干系人stakehol
  • 光猫改桥接,手机如何访问光猫后台,只要一根网线就可以了

    光猫改桥接之后一般有四种方法可以访问光猫后台 一 电脑用网线直连光猫的LAN口 然后设置好对应IP 二 光猫自带WiFi功能的 就直接开启WiFi 连接对应的WiFi 三 路由器的WAN口支持双模式 即可以进行PPPOE拨号 同时支持DHC
  • django根据已有数据库表生成model类。Django生成迁移文件,将迁移文件迁移到数据库

    根据已有的数据库表生成Django框架的APP中的models py代码 生成模型文件命令 python manage py inspectdb 将模型导入APP python manage py inspectdb gt app mode
  • 华三vlan配置

    基于MAC地址划分vlan 配置思路 创建VLAN 100 VLAN 200 配置Device A和Device C的上行端口为Trunk端口 并允许VLAN 100和VLAN 200的报文通过 配置 Device B 的下行端口为Trun
  • FindWinow

    1 MFC中的Caption属性就是windowName属性
  • 初始TypeScript

    来自刚接触TypeScript的小菜鸡 养生青年阿贺 一 什么是TypeScript 1 TypeScript 是一款编程式语言 微软开发的 2 typescript式Javascript的超集 遵循了最新的ES6 ES5的规范 types
  • join后 on , and ,where 实例测试

    目录 一 join实现方式 一 原理 二 join 后用 on and 还是 where 区别 一 原理 二 on where实例 1 创建表和数据 2 测试语句和结果 三 on and实例 1 添加数据 2 测试语句和结果 一 join实
  • 时序预测

    时序预测 MATLAB实现NAR非线性自回归模型时间序列预测 目录 时序预测 MATLAB实现NAR非线性自回归模型时间序列预测 效果一览 基本介绍 程序设计 参考资料 效果一览
  • Linux创建100个用户并设置密码

    创建100个用户并且设置123456为密码 bin bash for i in 1 100 do useradd a i echo 123456 passwd stdin a i done 删除100个用户 要先进root用户 bin sh
  • 通过输出流将文档下载到本地

    导出Excel文档到本地 param path 文件将要保存的目录 ApiOperation value 下载Excel模板 RequestMapping value downloadDepartment xls method Reques
  • C++子类和基类的相互转换

    C 子类和基类的相互转换 1 基类对象指针可以隐式转换为子类对象指针 2 子类对象转换为基类对象 基类必须存在虚函数表 不然访问报错 include
  • QT信号与槽的连接方式

    一 Qt AutoConnectionQt AutoConnection表示系统自动选择相应的连接方式 如果信号与槽在同一线程 就采用Qt DirectConnection 如果信号与槽不在同一线程 将采用Qt QueuedConnecti
  • 优秀的NAS不光只有群晖,看看威联通在安全性上如何K掉群晖

    声明 此贴转载纳斯网 感谢kala版主的呕心评测 让大家NAS有了更深入的了解 有了更多的选择 第一 为什么选择nas 其实nas对于我们来讲 第一大用处是什么 就是安全性 我想很多人都想把nas做成家里的数据中心吧 对应数据中心当然是希望
  • [GXYCTF2019]BabyUpload

    GXYCTF2019 BabyUpload 0x01漏洞类型 文件上传 经过测试 发现存在以下waf 不全 1 jpg不能过大 2 检查内容
  • Springboot2(44)集成canal

    源码地址 springboot2教程系列 canal高可用部署安装和配置参数详解 前言 canal是阿里巴巴的基于数据库增量日志解析 提供增量数据订阅 消费 目前主要支持了mysql 可以用于比如数据库数据变化的监听从而同步缓存 如Redi
  • 2018-2019-2 网络对抗技术 20165236 Exp2 后门原理与实践

    2018 2019 2 网络对抗技术 20165236 Exp2 后门原理与实践 一 实验内容 3 5分 1 使用netcat获取主机操作Shell cron启动 0 5分 2 使用socat获取主机操作Shell 任务计划启动 0 5分
  • 【论文精读】Deblur-NeRF

    今天读的是一篇CVPR2022的文章 这项工作由港科大 腾讯和港大共同完成 他们对模糊图片作为输入进行NeRF重建进行了研究 项目地址 点此前往 Abstract NeRF近年来在三维场景重建和新视角合成任务上表现出众 但是 野外环境中采集
  • 【GAMES101闫令琪图形学】作业0(配置开发环境)

    去games101往期作业汇总帖下载作业0的压缩包 作业0是让你配环境的 很简单 操作系统 VirtualBox虚拟机 Ubuntu20 04 比课程提供的虚拟硬盘版本更高 安装eigen和cmake sudo apt get instal