龙书11是一本3D游戏入门级教程,推荐看完这本书之后去看另一本叫做《Real Time Rendering》的书。
本文仅供个人记录和复习,不用于其他用途
向量的长度
向量的长度等于有向线段的长度,我们用双竖线来表示向量的大小。现在,给出一个向量 $ \vec{u}=(x,y,z) $,由毕达哥拉斯定理(勾股定理)可得到如下求模公式:
不过在某些情况下,我们并不关心向量的长度,只需要用它来表示一个方向。对于这种向量,我们将之称为单位向量,其长度为 1。当我们想要让一个向量具有单位长度时,就需要对该向量进行规范化。我们将向量的每个分量除以该向量的模,得到规范化向量:
如果要验证正确性的话,只需要计算$ |\vec{\hat{u}}| $的长度即可:
关于如何在Hexo中显示数学公式
首先把Hexo默认的渲染器卸载了,换个新的。在Hexo目录下输入以下代码:
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save
然后按照 ../node_modules/kramed/lib/rules/inline.js 的路径,找到 inline.js 这个文件,并进行部分修改:
//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, 第11行,将其修改为
escape: /^\\([`*\[\]()#$+\-.!_>])/,
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, 第20行,将其修改为
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
它取消了该渲染引擎对 \,{,} 的转义,然后再 hexo clean、hexo g 重新部署,即可解决问题。
另外注意一点,对于需要用到 MathJax 公式的文章,要在 Front-matter中 打开 MathJax 开关,例如:
title: DirectX11龙书学习笔记(2)——长度和单位向量
data: 2018-03-08
tags: [DirectX,线性代数,计算机图形学]
mathjax: true
categories: DirectX11龙书学习笔记
---
如果还不能显示,那么就需要到主题配置文件中修改。这里以 Next 主题的 _config.yml 文件为例:
# MathJax Support
mathjax:
enable: true
per_page: true
#cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML
这样,就能够完整的显示出数学公式,不用再添加那些图片了。
MathJax公式语法
下面是一些比较常见的公式语法:
符号 | 释义 | 测试用例 | 最终效果 |
---|---|---|---|
^ | 上标 | \$ x^{y^z}=(1+e^x)^{-2xy^w} \$ | $x^{y^z}=(1+e^x)^{-2xy^w}$ |
_ | 下标 | \$ O_2 \$ | $O_2$ |
\frac{分子}{分母} or 分子 \over 分母 | 分数 | \$ f(x,y,z)=3y^2z(3+\frac{7x+5}{1+y^2}) \$ | $ f(x,y,z)=3y^2z(3+\frac{7x+5}{1+y^2}) $ |
\sqrt[根指数,省略时为2]{被开方数} | 开方 | \$ \sqrt{2}、\sqrt[3]{9} \$ | $ \sqrt{2}、\sqrt[3]{9} $ |
\ldots | 与文本底线对齐的省略号 | \$ x_1x_2{\ldots}x_n \$ | $ x_1x_2{\ldots}x_n $ |
\cdots | 与文本中线对齐的省略号 | \$ x_1x_2{\cdots}x_n \$ | $ x_1x_2{\cdots}x_n $ |
\int_积分下限^积分上限(被积表达式) | 积分 | \$ \int_1^n{x^2}dx \$ | $ \int_1^n{x^2}dx $ |
\sum_{下标表达式}^{上标表达式} {累加表达式} | 累加 | \$ \sum_{i=1}^n \frac{1}{i^2} \$ | $ \sum_{i=1}^n \frac{1}{i^2} $ |
\\, or \; or \quad or \qquad | 不同宽度的空格 | \$ a \, b \mid a \; b \mid a \quad b \mid a \qquad b \$ | $ a \, b \mid a \; b \mid a \quad b \mid a \qquad b $ |
\color{颜色}{文字} | 更改文字颜色 | \$ \color{red}{红色} \$ | $ \color{red}{红色} $ |
\boldsymbol{x} | 斜体加粗 | \$ \boldsymbol{ABCD} \$ | $ \boldsymbol{ABCD} $ |
\vec{w} | 向量 | \$ \vec{w} \$ | $ \vec{w} $ |
\cdot | 点乘 | \$ \vec{w}\cdot x_{i} \$ | $ \vec{w}\cdot x_{i} $ |
\overrightarrow{AB} | 从A到B的向量 | \$ \overrightarrow{AB} \$ | $ \overrightarrow{AB} $ |
上述公式都是属于行间公式,如果想要让公式独占一行,那么就可以用 $$
来表示。
分段函数
如果你想要写分段函数,那么格式为:f(x)=\begin{cases}语句1\\语句2\...\end{cases}
。当然,公式的中间也可以插入其他的表达式来显示更复杂的函数。
\text{文字}
$$
f(n)=\begin{cases}
n/2, & \text{如果$ x<=2 $}\\
3n+1, & \text{如果$ x>2 $}
\end{cases}
$$
效果如下:
矩阵
使用$$\begin{matrix}…\end{matrix}$$
来生成矩阵,其中 … 表示的是 LaTeX 的矩阵命令,矩阵命令中每一行以 \\ 结束,矩阵的元素之间用 & 来分隔开。
当然,直接显示其实不太好看,我们可以在矩阵的两旁添加大括号,方法就是将{matrix}
改为{bmatrix}
即可。
$$
\begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{bmatrix} \tag{1}
$$
效果如下:
当然你也可以用{Bmatrix}
:
$$
\begin{Bmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{Bmatrix} \tag{2}
$$
矩阵会多出一对花括号:
如果矩阵元素太多,可以使用\cdots
$ \cdots $ \ddots
$ \ddots $ \vdots
$ \vdots $ 等省略符号来定义矩阵。
例如:
$$
\begin{bmatrix}
1 & 2 & \cdots & 4 \\
7 & 6 & \cdots & 5 \\
\vdots & \vdots & \ddots & \vdots \\
8 & 9 & \cdots & 0
\end{bmatrix} \tag{3}
$$
结果如下:
另外,如果你不想要矩阵单独占一行,你可以使用\bigl(\begin{smallmatrix} … \end{smallmatrix}\bigr)
。
例如:
我们使用矩阵 $\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$ 作为因子矩阵,将其...
效果如下:
使用矩阵 $\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$ 作为因子矩阵,将其…