相比 2D 中的旋转变换,3D 中的旋转变换复杂了很多。关于 2D 空间的旋转,可以看这篇文章。本文主要粗略地探讨一下 3D 空间中的旋转。
旋转的要素
所谓旋转要素就是说,我们只有知道了这些条件,才知道怎么旋转一个物体。回忆 2D 空间中的旋转,我们需要确定旋转中心、旋转角以及旋转方向才能旋转一个图形。以此类推,到了 3D 空间,我们仍然需要确定三个要素:一个旋转轴、旋转角以及旋转方向。 下面,为了讲解的方便,旋转方向默认为:正对旋转轴正方向,按逆时针方向为旋转正方向,反之为旋转负方向。
相比 2D 中的旋转变换,3D 中的旋转变换复杂了很多。关于 2D 空间的旋转,可以看这篇文章。本文主要粗略地探讨一下 3D 空间中的旋转。
所谓旋转要素就是说,我们只有知道了这些条件,才知道怎么旋转一个物体。回忆 2D 空间中的旋转,我们需要确定旋转中心、旋转角以及旋转方向才能旋转一个图形。以此类推,到了 3D 空间,我们仍然需要确定三个要素:一个旋转轴、旋转角以及旋转方向。 下面,为了讲解的方便,旋转方向默认为:正对旋转轴正方向,按逆时针方向为旋转正方向,反之为旋转负方向。
(本文转载自「stormzhang」在微信公众号「AndroidDeveloper」发表的关于写作排版的文章。看完后,再对比「Google黑板报」以及其他一些大V的文章排版后,发现原来好排版的套路都是一样的,在此记录一波。)
最近频繁在论文中看到「PCA」的影子,所以今天决定好好把「PCA」的原理和算法过程弄清楚。
PCA,又称主成分分析,英文全称「Principal Components Analysis」。维基百科上的解释是:「PCA」是一种分析、简化数据集的技术,经常用于减少数据集的维数,同时保持数据集中对方差贡献最大的特征。说得通俗一点,就是把数据集中重要的特征保存下来,把不重要的特征去除掉。
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。 这个解释摘自维基百科,看起来很是抽象,不好理解。其实简单来讲,协方差就是衡量两个变量相关性的变量。当协方差为正时,两个变量呈正相关关系(同增同减);当协方差为负时,两个变量呈负相关关系(一增一减)。 而协方差矩阵,只是将所有变量的协方差关系用矩阵的形式表现出来而已。通过矩阵这一工具,可以更方便地进行数学运算。
在成功将 mac 由 10.10 升级到 10.12 后,我发现除了新增一个并不怎么好用的 Siri 外,原来支持 NTFS 硬盘的驱动居然也成功失效了。我那块 500 GB 的东芝硬盘,虽不至于成砖,但一块只能读不能写的硬盘,实在让人欲哭无泪。巧的是,最近需要频繁地将一些数据文件( GB 级别)拷贝到其他电脑,而手头又仅剩一些小容量 U 盘。于是,我突然萌生了写一个文件分割器的想法,将大的压缩文件分片后,再用这些小 U 盘搬到到其他电脑上去。
有人会问,这样的软件明明网上有的是,何必自己写呢?没错,我就是这么无聊的人。
这篇文章中,我们来聊聊 OpenGL 中的坐标系统以及它们之间的转换。
(⚠️阅读本文需要有线性代数基础。)
首先,我们需要运用一点线性代数的知识,了解不同坐标系统变换的原理。 由于本文针对的是三维坐标,所以讨论的空间是 \(R^3\) 空间。
最近在看图像风格化的论文的时候,频繁遇到 Bilateral Filter。google 一波后,发现并不是什么不得了的东西,但它的思想却很有借鉴意义。
Bilateral Filter,中文又称「双边滤波器」。相比以往那些仅仅使用位置信息进行滤波的 filter,Bilateral Filter 还考虑了颜色信息,可以保证边缘部分不会被过滤。
简单来说,一般的 filter 都是基于这样的公式进行滤波的: \[ h(x)=k_{d}^{-1}{(x)}\iint_\infty^\infty{f(\zeta)c(\zeta, x)} d\zeta \]
numpy.ndarray(shape, dtype=None, buffer=None, offset=0, strides=None, order=None)
This is an array object represents a multidimensional array of fixed-size items(Fixed-size 意味着数组一旦创建就没法修改了)。
注:
1 | >>> m = np.ndarray(shape=(2, 3), dtype=np.int32, buffer=np.array([1,2,3,4,5,6], dtype=np.int32)) |
查看某个命令行工具的位置,比如:
1 | which node |