草庐IT

刚体变换

全部标签

L 字形变换

L字形变换题目描述将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行L字形排列。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串.请你实现这个将字符串进行指定行数变换的函数:convert(s:string,numRows:number)=>string比如输入字符串为"ABCDEFGHIJKLMNO" 行数为3时,排列如下:(-表示占位符)A--F--KB--G--LCDEHIJMNO输出:AFKBGLCDEHIJMNO行数为4时,排列如下:A---H---OB---I---C---J---DEFGKLMN输出:AHOBICJDEFGKLMN行数为5时,排列如下

L 字形变换

L字形变换题目描述将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行L字形排列。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串.请你实现这个将字符串进行指定行数变换的函数:convert(s:string,numRows:number)=>string比如输入字符串为"ABCDEFGHIJKLMNO" 行数为3时,排列如下:(-表示占位符)A--F--KB--G--LCDEHIJMNO输出:AFKBGLCDEHIJMNO行数为4时,排列如下:A---H---OB---I---C---J---DEFGKLMN输出:AHOBICJDEFGKLMN行数为5时,排列如下

软光栅从零开始——MVP变换

前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换​ 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移

软光栅从零开始——MVP变换

前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换​ 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移

webgl 系列 —— 变换矩阵和动画

其他章节请看:webgl系列变换矩阵和动画动画就是不停地将某个东西变换(transform)。例如将三角形不停地旋转就是一个动画和CSStransform类似,变换有三种形式:平移、缩放和旋转。简单的变换用普通表达式容易实现,如果事情复杂,比如旋转后平移,这时就可以使用变换矩阵。普通表达式平移比如要平移一个三角形,只需要将三个顶点移动相同的距离即可(这是一个逐顶点操作)用二维向量表示,就像这样:[x1,y1]+[tx1,ty2]=[x2,y2]比如要实现如下效果:前面我们已经讲过三角形了,这里不再冗余,改动的核心代码如下:constVSHADER_SOURCE=`attributevec4a_

webgl 系列 —— 变换矩阵和动画

其他章节请看:webgl系列变换矩阵和动画动画就是不停地将某个东西变换(transform)。例如将三角形不停地旋转就是一个动画和CSStransform类似,变换有三种形式:平移、缩放和旋转。简单的变换用普通表达式容易实现,如果事情复杂,比如旋转后平移,这时就可以使用变换矩阵。普通表达式平移比如要平移一个三角形,只需要将三个顶点移动相同的距离即可(这是一个逐顶点操作)用二维向量表示,就像这样:[x1,y1]+[tx1,ty2]=[x2,y2]比如要实现如下效果:前面我们已经讲过三角形了,这里不再冗余,改动的核心代码如下:constVSHADER_SOURCE=`attributevec4a_

AlphaFold2中的残基刚体表示

技术背景在前面的这一篇博客中,比较全面的介绍了组成蛋白质的各种氨基酸的三维结构。由于每个氨基酸大小不一,在传统的蛋白质折叠预测的方案中,一般会考虑全原子方案或者是粗粒化方案。对于全原子方案而言,即时去除了氢原子,也包含了极大的原子数,对于计算量来说是一个非常大的考验。而将一个氨基酸近似为一个点的方案,因为往往忽略了太多的信息,比如氨基酸之间的二面角等,因此无法达到很好的预测效果。在AlphaFold中,将每一个氨基酸在主链上的位置,用一个三角形刚体来表示。这个三角形的三个顶点分别是C原子、N原子和\(\alpha\)位的C原子。由于一个三角形就可以确定一个平面,因此每一个氨基酸可以通过一个三角

AlphaFold2中的残基刚体表示

技术背景在前面的这一篇博客中,比较全面的介绍了组成蛋白质的各种氨基酸的三维结构。由于每个氨基酸大小不一,在传统的蛋白质折叠预测的方案中,一般会考虑全原子方案或者是粗粒化方案。对于全原子方案而言,即时去除了氢原子,也包含了极大的原子数,对于计算量来说是一个非常大的考验。而将一个氨基酸近似为一个点的方案,因为往往忽略了太多的信息,比如氨基酸之间的二面角等,因此无法达到很好的预测效果。在AlphaFold中,将每一个氨基酸在主链上的位置,用一个三角形刚体来表示。这个三角形的三个顶点分别是C原子、N原子和\(\alpha\)位的C原子。由于一个三角形就可以确定一个平面,因此每一个氨基酸可以通过一个三角

Opengl ES之矩阵变换(上)

前言说到矩阵变换,我们第一时间想到的就是大学时代的线性代数这些复杂的东西,突然有了一种令人从入门到放弃的念头,不慌,作为了一个应用层的CV工程师,在实际应用中线性代数哪些复杂的计算根本不用我们自己去算,绝大部分情境下直接使用Matrix这个类或者glm这个库即可。关于矩阵与向量的相关知识,矩阵的加减乘除等规则,这里就不展开细说,感兴趣的同学自行查阅线性代数即可,不过这些规则忘记了也没关系,反正有API可用。我们知道在Opengl中有很多中坐标系,在Opengl中矩阵的一大作用就是将坐标从一个坐标系转换到另一个坐标系下,同时还可以通过矩阵实现一些形变的效果,今天我们就使用矩阵的方式搭配Openg

Opengl ES之矩阵变换(上)

前言说到矩阵变换,我们第一时间想到的就是大学时代的线性代数这些复杂的东西,突然有了一种令人从入门到放弃的念头,不慌,作为了一个应用层的CV工程师,在实际应用中线性代数哪些复杂的计算根本不用我们自己去算,绝大部分情境下直接使用Matrix这个类或者glm这个库即可。关于矩阵与向量的相关知识,矩阵的加减乘除等规则,这里就不展开细说,感兴趣的同学自行查阅线性代数即可,不过这些规则忘记了也没关系,反正有API可用。我们知道在Opengl中有很多中坐标系,在Opengl中矩阵的一大作用就是将坐标从一个坐标系转换到另一个坐标系下,同时还可以通过矩阵实现一些形变的效果,今天我们就使用矩阵的方式搭配Openg