2020-07-11 16:54:49
本文介绍的Matrix,是.net自带的类. 其命名空间为:System.Drawing.Drawing2D注意并不是netMarketing中那个netMarketing.graphics.Matrix在GDI+中,可以在Matrix对象中存储仿射变换。由于表示仿射变换的矩阵的第三列总是(0,0,1),因此在构造Matrix对象时,只需要指定前两列的6个数。语句:Matrix myMatrix...
2020-07-11 07:19:04
Introduction2D image transformation in .NET has been very much simplified by the Matrix class in the System.Drawing.Drawing2D namespace. In this article, I would like to share with the reader on the u...
2020-07-10 21:13:13
在上一篇文章中,我们讲到,在Android中,scale(缩放),rotation(旋转)和 translation(平移)都是以矩阵(Matrix)的形式定义的,实际上在图形学中,这些平面图形的变换都是以矩阵的形式存在的。先来回顾一下,下面,左中右分别scale(缩放),rotation(旋转)和 translation(平移)在Android中的矩阵表示:如果只是单纯的应用某一个变换,我们都知...
2020-07-10 11:41:05
在二维平面上,常用的有以下三种基本的图形变化:1)Translation2)Scale3)Rotation在Android的开发中,我们也经常会用到这样的一些图形变换,尤其是我们在写自定义View时,更是会经常利用到Matrix来实现一些效果,比如平移,旋转,缩放及切变等,相信很多朋友应该很想知道,矩阵实现这种变换的原理是什么,什么是矩阵的左乘右乘,它们在实现效果上有什么差别吗?今天就让我们一起来...
2020-07-09 19:25:04
Never put off what you can do today until tomorrow.从刚开始学unity各种组件,C#基础,API,到现在的学习Cg语言,学习shaderLab用了很长时间在细节上,有的时候一些看似非常基础的概念,大致了解下怎么用后,如果不知道其原理,那么,我认为是不可能真正的学会一种技术的。本节就来实现矩阵与向量之间的计算,,我们将自己实现向量的类和矩阵的类,这...
2020-07-09 17:44:05
基本的二维变换可包括旋转、缩放、扭曲,和平移四种,而这些几何运算则可以转换为一些基本的矩阵运算:这几个变换都是线性的,但平移运算不是线性的,不能通过2*2矩阵运算完成。若要将点 (2, 1)在 x 方向将其平移 3 个单位,在 y 方向将其平移 4 个单位。 可通过先使用矩阵乘法再使用矩阵加法来完成此操作。综合这几种基本运算,数学家们将其统一为一个3*3矩阵,存储形式如下:由于表示仿射变换的矩阵的...
2020-06-30 09:14:38
这一篇我们来聊一下光线反射的基础计算,看过点叉积篇的小伙伴们肯定注意到底下有一句话,就是“为了以后的光线反射reflect计算”,这里我们就别以后以后了,现在就动起来。光线反射是一个非常重要的概念,或者说常识,这里我们来聊一下真实世界。现实世界中,我们眼睛之所以看到各种各样的物体,其原因就是太阳发出的光线照射到地球上,然后经过反射后进入人的眼睛,人的眼睛接收到光子后在视网膜上成像,然后通过生物信号...
2020-06-30 09:09:37
国庆放假前写一篇,搞不好整个国庆没得机会写了,在几何开发中,点与凸多边形的关系判断属于很常见的,比如射线与平面相交,判断交点是否在若干顶点组成的多边形中。 和之前判断点在三角形中类似,先来一张点与多边形关系示意图,如下: ①很容易就看的出来,五个夹角之和等于360°,②可以看得出来∠BPC=其他四角之和,除非∠BPC在线段BC上,不然小于180°,则五夹角之和小于360°。...
2020-06-30 09:07:07
判断点在三角形内部,属于三维开发中很常用的一种算法,之前搞忘记说了,前面我们判断射线与平面,如果再加上判断交点是否在三角形内的计算就更好了。 好,假设我们有个三角形,和三角形所在平面的一个点,那么怎么判断点与三角形的关系,先来个示意图,如下:可以看的出来,如果点P在三角形内部,那么P与三角形ABC组成的六个夹角之和为180°(三角形内角和180°),如果在三角形外部,则不然。...
2020-06-30 09:03:42
射线与平面的检测属于三维空间典型的检测算法之一,属于三维中基础实用一通百通的技术之一。 之前我们在空间点与平面中已经大致了解了其中的概念和原理,不清楚的可以先回过去看下,空间表示法A*x+B*y+C*z+D = 0,射线表示法为start + n*dir(起点+模长*朝向),那么射线与平面检测,就是解方程组就好了,还是画个图方便理解,如下:程序设计思路也简单,首先使用叉积计算出平面单位...
2020-06-30 08:59:47
在三维图形问题中,点和直线计算是很常见的,比如,已知三维空间中一条直线和任意非直线上的点,求点到直线的垂线(或垂点),这个问题比较典型,基本上就属于一系列三维空间点与直线关系的代表。 首先如下图:学到现在的几何向量,一眼就看得出来,只需要根据向量PC1与向量PV的点积等于0,得到方程组就可以最终计算出P点坐标了。首先我们确定三维空间中P点表示法,使用C1 + n*dir的形式,其中C1为起...
2020-06-30 08:57:13
最近又回顾了一遍叉积,概念我们应该了解,几何上就是向量a和b,那么向量a和b的叉积得到向量c,向量c与向量a和b相互垂直,也就是说向量c垂直于向量a和b所在的平面,同时向量c的模长等于向量a和b组成的平行四边形的面积。 物理上叉积的意义就是力矩的意义。 这里回顾一下以前写的叉积篇:叉积 实际上有个重要的问题以前忽视掉了,那就是unity左手坐标系中的叉积计算遵循左...
2020-06-30 08:50:07
最近又跑去温习基础数序去了,没办法,人对某个事物的永久记忆是七次理解才能达成,所以抽空写一些常用的数学计算。 在二维和三维开发中,计算向量之间夹角属于很常见的操作,在数学中我们可以使用下面: 1.余弦定理,如果我们知道三边的情况下,使用余弦定理可以计算出任意角的角度,如图: 2.点乘(点积),我们可以通过点乘(点积)推导出: a·b...
2020-06-30 08:45:55
三维引擎中Camera类带有一系列几何函数,这里我们看一下unity中这两个Camera提供的几何函数的意义和实现: 1.ScreenToViewportPoint 顾名思义就是屏幕坐标转视口坐标,在渲染流程中,建模->世界->视口->裁剪->视图得到屏幕坐标系中坐标数值,那么阶段性反过来从屏幕到视口的坐标变换也好理解,屏幕的左下角(0,0)到右...
2020-06-30 08:36:11
这一篇是几何向量的扩展篇之一,因为后面要讲到的CG技术需要这一篇的数学基础,所以额外开一篇进行讲解。 这次我们就观察学习二维中点与直线的重要关系,垂线或者说图形学中的法线,因为这和后续的反射向量、光追计算、镜面计算等有很大依赖关系,比如说我们有一个顶点P处于一块二维镜面前,求这个顶点P在二维镜面中的倒影顶点P',这就需要求出顶点P到镜面所处的直线L的垂线及距离了,如下图: 首先...
2020-06-29 20:45:32
二维向量即平面向量,三维向量即空间向量。平面向量是在二维平面内既有方向又只有大小的量,物理学中也称作矢量,与之相对的是只有大小、没有方向的数量(标量)。空间中具有大小和方向的量叫做空间向量。向量的大小叫做向量的长度或模(modulus)。规定,长度为0的向量叫做零向量,记为0。模为1的向量称为单位向量。与向量a长度相等而方向相反的向量,称为a的相反向量。记为-a;方向相等且模相等的向量称为相等向量...
2020-06-28 13:46:04
概念:平面向量的说的向量,指的是:有大小,有方向,无起点其中所谓的无起点,指的是起点不重要,而并不是没有。常见的运算:(1)加(x1,y1)+(x2,y2)=(x1+x2,y1+y2)(2)减(x1,y1)-(x2,y2)=(x1-x2,y1-y2)(3)数乘k(x1,y1)=(kx1,ky1)(4)点乘(x1.y1).(x2.y2)=x1x2+y1y1(5)求模求模即是求向量大小,有两种写法|(...
2020-06-23 21:49:35
之前学习完矩阵的理解和作用,又经历过一轮基本仿射变换推导,我想大家对矩阵在实际程序中的应用应该基本了解了,这里我们就实际应用一下。 之前学习的变换过程基本都是变换一个“规范”的图形,这次我们就反过来,把一个“不规范”的图形变换“规范”。 首先作为码农们,我们应该都会阅读大量书籍的,但是为了方便我自己下载过大量pdf文档,因为那样我不需要随身带一本厚重厚重的书,只用带个...
2020-06-23 21:44:58
之前我们学习了理解了图形学中的线性代数,而且实际的操作了图形的基础变换,既然学习完基本变换了,那么接下来就看看一些不常见的特殊变换,下面我们就看看错切变换,也称为切变。 这里要介绍一下仿射变换的一个特点,就是“平直性”,因为前面我们理解仿射变换是一个线性变换加上一个平移,线性这个性质就保证了直线变换后还是直线,所以仿射变换,变换后的图形,是直线边的还是直线边。 切变是一...
2020-06-23 21:38:17
这篇博文我只是准备对上一篇博文的内容进行扩展,因为上一篇我写完二维xy仿射坐标系的变换,这一篇我就扩充到三维xyz仿射坐标系的变换推导。 前面我们已经理解学习完矩阵在图形学中的作用,所以这一篇我只做纯推导和图形应用演示。 1.矩阵操作三维仿射坐标系平移,如下图: 三维仿射空间平移无非就是xyz三轴移动,建立齐次坐标和4x4矩阵就能推出来...
2020-06-23 21:30:58
前面我们从理论上理解了图形学中图形的变换过程,具体可以理解为如果要对一个图形A进行变换,那么存在图形A所处的相同原点的仿射空间SpaceA(或者说仿射空间SpaceA中原点处存在一个图形A),这时候我们暂时忽略图形A,只考虑SpaceA经过各种变换最终变换成另一个仿射空间SpaceB(或者说变换后的仿射空间SpaceA与另一个仿射空间SpaceB重合),因为仿射空间SpaceA变换后可能被伸缩...
2020-06-23 21:25:42
前面有个问题我们还没聊开,不知道小伙伴们记得不?在几何向量的基本概念这一章,我们了解了如下两个概念: 1.矢:空间中的一个直线段,当规定其两个端点中一个为起始点,一个位终止点,这个线段就称为一个矢。 2.向量:具有同样长度和方向的失的集合称为一个向量,单独的一个矢为向量的一个代表。 这里就引出了我们迷惑的问题了,因为数学上(当然程序中也一样)表示向量...
2020-06-23 07:02:40
机器视觉常见的数学公式很多,下面的贴子会由浅到深依次跟贴下去,以方便大家查阅与记忆。(一) 6个必须有记住的三角函数公式:(二)直线方程相关(1) 直线斜率 经过两点P1(x1,y1), P2(x2,y2) (x1≠x2)的直线斜率的公式:(2)两点之间的距离 平面坐标空间坐标(3)两点式直线方程(4)直线的一般方程(5)两直线交点例题:(6)点到直线的距离 例题:(7)两条平行线间的距离 (三)...
2020-06-09 17:14:28
导语: 随着机器视觉应用的日益广泛,大幅面 多相机 视觉系统的需求越来越多,主要应用方向为大幅面高精度的定位与测量和场景拼接等。 多相机视觉系统的难点在于多相机坐标系的统一. 可以分为两类,一是相机视野间无重叠部分,二是相机视野间有重叠部分。 相机间无重叠部分的情况主要用于大幅面多相机高精度的定位和测量,相机间有重叠部分的情况主要用于场景的拼接等。====...
2020-06-08 14:41:07
如图1所示,D到E的曲面相对于A进行线轮廓度约束。这个设计没有定义还不够充分,0.1线轮廓度的公差带大小虽然确定,但没有明确约束方向,相对于A基准有两个方向,如图2和图3。图2. 一种视图方向的可能,平行于A基准任意相交面,公差带为宽度为t=0.1mm等距线图3. 另一种可能定义的方向,垂直于A基准的任意相交面图4. ASME的充分定义方法,完成了如图5的公差带方向定义,为了充分定义图5要求的设计...
2020-06-08 14:24:29
摘要:5.2线、面轮廓度公差带的定义、标注解释及示例线、面轮廓度视其与基准有无关系分属于形状公差(与基准要素无关)或方向(平行、垂直或倾斜于基准要素)公差、位置(对基准要素有准确位置 要求)公差,其定义,标注解释及示例见表3.3-22. 5.2线、面轮廓度公差带的定义、标注解释及示例线、面轮廓度视其与基准有无关系分属于形状公差(与基准要素无关)或方向(平行、垂直或倾斜于基准要素)公差、位置(对基准...
2020-06-06 10:41:26
摘要: 任何零件都是由平面和曲面组成的。曲面形状误差的检测和评定也是产品检验中一个非常重要的项目。在机械制造业中,用轮廓度指标评定其误差大小。轮廓度分为线轮廓度和面轮廓度,本文主要针对线轮廓度的知识及误差检测方法等内容进行介绍. 线轮廓度公差的相关概念 线轮廓度公差的定义线轮廓度是限制实际曲线对理想曲线变动量的一项指标,它是对非圆曲线的形状精度要求。 线轮廓度公差是实际被测要素(轮廓线要素)对理想...
2020-06-06 10:26:34
本文主要对线轮廓度进行阐述,实际运用中,一般薄的钣金件的切边会运用线轮廓度来控制,通过控制切边的线元素,对整个切边的状态进行控制。线轮廓线轮廓限制线元素对它的真正轮廓的误差的形位公差。此形位公差后可以带基准,也可以不带基准,具体情况由实际应用的功能要求来标注。线轮廓度与面轮廓度相似,基本概念一样,主要区别是公差带不一样, 面轮廓是3维公差带,线轮廓是2维公差带。线轮廓度的公差带公差带是两条应用到表...
2020-06-06 10:17:47
用于描述曲面尺寸准确度的主要指标为轮廓度误差,它是指被测实际轮廓相对于理想轮廓的变动情况。可以带基准或不带基准。1、 所谓“轮廓度”,是指被测实际轮廓相对于理想轮廓的变动情况。这一概念用于描述曲面或曲线形状的准确度2、 轮廓度计算公式面轮廓度的理解可以先从平面间的面轮廓度理解,然后曲面的面轮廓度其实和平面是一个意义,和位置度一样,都可以控制尺寸的位置。当然里面可以包括对方向和形状的控制。3、 直线...
2020-05-19 16:45:22
一、特征提取Feature Extraction:· SIFT [1] [Demo program][SIFT Library] [VLFeat]· PCA-SIFT [2] [Project]· Affine-SIFT [3] [Project]· SURF [4] [OpenSURF] [Matlab Wrapper]·...