IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> CG基础学习笔记(Lecture1-2) -> 正文阅读

[C++知识库]CG基础学习笔记(Lecture1-2)

该笔记基于闫令琪大神的cs课程及课后作业总结而成?


目录

?

学习过程中遇到的一些词?

线代基础

Eigen库的用处

矩阵/向量的练习:?


学习过程中遇到的一些词?

Geometrically: Parallelogram law & Triangle law
几何:平行四边形定律和三角形定律

Algebraically: Simply add coordinates
代数上:简单地添加坐标

usually orthogonal unit
通常正交单元

Cartesian Coordinates
笛卡尔坐标

Dot product
点积

Cross product
交叉积

Orthonormal bases and coordinate frames
正交基与坐标框架

Decompose a vector
分解向量

dual matrix of vector a
向量a的对偶矩阵

homogenous coordinate?
齐次坐标

线代基础

点乘可分解向量以及判断向量之间接近or远离

叉乘可判断方位

点乘

叉乘求得的结果垂直于两个原始向量,因此常用于求法线, 所以三维软件会提供翻转法线的功能 opengl永远是右手系,DirectX经常是左手系

a在b的左侧的意思是,a经过不大于180°的逆时针旋转可以与b的方向一致,右侧同理,方向变为顺时针

点在所有向量左侧或在所有向量左侧,就是多边形内部

Eigen库的用处

Eigenhttps://eigen.tuxfamily.org/index.php?title=Main_Page

?Eigen: Matrix and vector arithmetichttps://eigen.tuxfamily.org/dox/group__TutorialMatrixArithmetic.html

矩阵/向量的练习:?

注:C++中 三角函数运算使用弧度制

#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;

int main()
{
    std::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;//√2
    std::cout << std::acos(-1) << std::endl;//arccos(-1)
    std::cout << std::sin(30.0 / 180.0 * acos(-1)) << std::endl;//sin(30°)

    Matrix2d a;
    a << 8, 2,
        2, 1;
    MatrixXd b(2, 2);
    b << 4, 1,
        1, 4;
    std::cout << "a =\n" << a << std::endl;
    std::cout << "b =\n" << b << std::endl;
    std::cout << "a + b =\n" << a + b << std::endl;
    std::cout << "a - b =\n" << a - b << std::endl;
    std::cout << "Do: a += b;" << std::endl;
    a += b;
    std::cout << "Now: a =\n" << a << std::endl;

    MatrixXf i(3,3), j(3,3);
    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;
    std::cout << "i * j =\n" << i*j << std::endl;

    Vector3d v(1, 2, 3);
    Vector3d w(1, 2, 4);
    std::cout << "v =\n" << v << std::endl;
    std::cout << "w =\n" << w << std::endl;
    std::cout << "v - 2 * w =\n" << v - 2 * w << std::endl;

    MatrixXf c(2, 3); 
    c << 1, 2, 3, 4, 5, 6;
    std::cout << "Here is the initial matrix c:\n" << c << std::endl;

    c.transposeInPlace();
    std::cout << "and after being transposed:\n" << c << std::endl;
}

测试效果:

Example of cpp :
1
0.5
1.41421
3.14159
0.5
a =
8 2
2 1
b =
4 1
1 4
a + b =
12  3
 3  5
a - b =
 4  1
 1 -3
Do: a += b;
Now: a =
12  3
 3  5
i * j =
 37  36  35
 82  84  77
127 132 119
v =
1
2
3
w =
1
2
4
v - 2 * w =
-1
-2
-5
Here is the initial matrix c:
1 2 3
4 5 6
and after being transposed:
1 4
2 5
3 6

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:53:52  更:2022-01-03 15:54:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:09:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码