精华内容
下载资源
问答
  • 五维几何
    千次阅读
    2021-04-22 05:54:52

    一维、二维、三维、四维、五维分别是什么?

    线是一维的,参数是点 面是二维的,参数是线 体是三维的,参数是面 以此类推,以体为参数构成的空间就是四维空间,通常理解为时间,从很多科幻小说中可以看到类似的说法。 那么以时间为参数构成的空间应该就是五维空间,在科幻中好像是要联系到...

    三维是如何演变成四维、五维甚至更多维啊,比方说...

    楼主问的可是“四维空间”的概念呢? 四维空间是在三维空间的概念上,加了时间的概念,可以这么简单的理解,三维空间是一个立体,那么要确定一个物质,在三维的概念中只要有长宽高就可以确定这个物体了。 但是思维空间还要加上时间的概念,也就是...

    一维空间,二维空间,三维空间,四维五维六维七维…...

    这东西没有定论。四维空间。用三维加时间一维都有点勉强。毕竟谁也没见过。只是想像的而已 建议你看看《三体》这本小说。里面对空间的认知我认为还是很合情理的。特别是以空间维度当成武器来用。这想象非常高明

    二维、三维、四维的区别,有没有五维?

    一、从三者的定义区分: 1、二维空间的定义:二维空间是指仅由长度和宽度(在几何学中为X轴和Y轴)两个要素所组成的平面空间,只向所在平面延伸扩展。 2、三维空间的定义:三维空间,日常生活中可指由长、宽、高三个维度所构成的空间。 3、四维...

    空间维度的定义是什么?我知道三维是前后-左右_上...

    空间维度,已知的有4维。并不是你想的左右上下前后那样,那个只是方向。已知的四维有维度,经度,海拔,时间。后面的就有待实验验证了

    谁有五维立体画呀

    所谓的五维立体画其实就是三维立体画的一个种类,一般称作变画的,五维不过是噱头。五维的东西目前只存在于数学中。

    有一维空间、二维空间、三维空间、四维空间,有没...

    你好,从五维空间就是理论性质的存在了,因为我们的世界是三维的几乎不能模拟出五维空间以上的实验,五维空间就是在长宽高时间的基础上加了一个速度的轴,当速度快到一定程度,时间就会缩短(根据时间和速度成反比)当速度达到光速的时候,时间...

    一维二维三维四维五维各是什么意思

    一维指的是直线。二维指的是指平面。三维指的是立体空间。四维指的是维度。五维指的是时间一维、层次一维、传统三维空间统一的空间。 一维空间中的物体,只有长度,没有宽度和高度。打一个比方,我们要把一个一维的物体(实际上就是一条线段)关...

    五维图,里面的多面能力什么意思

    满意答案 热问友 2012-03-12更高级惜没 追问: 比我高级我空间创造呢 答: 我认想科界关于类基自外物种--即外星说虽关于面奇观现止类没发现外物… 追问: 假设二维物存二维空间能察觉二维空间事物观察三维空间事物进化式适应二维空间存我我察觉高维...五维立体图,怎么画五维图(即以五边形反映各项水平)

    更多相关内容
  • OpenGL二场景小作业
  • 我们构造能斯特度量的最小五维超重力耦合到任意数量的矢量多重态的能斯特(Nernst)brane解,即极值极限内熵密度为零的黑麸。 标量采用特定的常数值并根据FI参数动态确定宇宙常数的值,而度量标准则采用增强型AdS ...
  • (系统会自己调分,我手动...大学计算机图形学课程作业代码,使用用斜等测图的绘制方法绘制三维几何图形,实现平移、比例、旋转、反射错切等变换。自用,代码完整。打包下载,可直接运行。c/c++语言MFC实现。支持vs。
  • UE4中三维几何总结——几何体

    千次阅读 2021-12-09 14:04:40
    UE4中三维几何总结——几何体1、简述2、基本图元3、几何图元类型3.1 凸面网格Convex Mesh3.2 三角形网格Triangle Mesh3.3 高度场Height Field 1、简述 此文目的总结三维几何学基础——几何体,可以依此提纲做发散,...

    1、简述

    此文目的总结三维几何学基础——几何体,可以依此提纲做发散,不局限为UE4,任何三维领域系统均可以使用学习
    几何体用于构建刚体的形状,作为碰撞触发器,以及作为场景查询系统中的体积。还可以用于测试几何体之间的交集、光线投射以及将一个几何体扫描到另一个几何体。以下主要介绍几种常见的几何体模块。

    2、基本图元

    基本图元指的是数学描述中的基本模块,三维中的模块为正方体、圆球和圆锥等,在osg中,使用Drawable类将这些图元进行存储,二维中的模块为正方形、三角形等,二维的几何模块使用Geometry保存。二维和三维图元最后都需要保存在Geode容器中。
    几何图形是值类型,继承自公共基类Geometry。每个几何类定义具有固定位置和方向的体积块或曲面。变换指定在其中解释几何图形的框架。

    3、几何图元类型

    常见3D几何图元:
    球体:由一个属性(即其半径)指定,并以原点为中心
    胶囊体:以原点为中心。它由半径和半高度值指定,其轴沿正 X 轴和负 X 轴延伸
    要创建几何图形是直立的胶囊的动态Actor,形状需要相对变换,使其围绕Z轴旋转四分之一圈。通过这样做,胶囊将沿着Actor的Y轴而不是X轴延伸。设置形状和Actor与设置球体相同
    盒体Box:包含三个边长的属性
    通过Box/ 胶囊体,可以把复杂物体房子等简化为胶囊
    平面Plane:平面将空间划分为"上方"和"下方"
    Plane 在几何学没有属性,因为形状的姿势完全定义了平面的碰撞体积
    具有PlaneGeometry 的形状只能为静态Actor创建
    凸面网格Convex Mesh:如果给定形状中的任意两个点,该形状包含它们之间的线,则该形状是凸面的
    三角形网格Triangle Mesh:与图形三角形网格一样,碰撞三角形网格由顶点和三角形索引的集合组成
    高度场Height Field:顾名思义,可以用于制作山体、地形等

    3.1 凸面网格Convex Mesh

    创建步骤

    1. 定义凸对象的顶点 例如金字塔的五个点
    2. 构造凸数据布局的描述 例如顶点数量 标志flag
    3. Cooking库构建 Convex Mesh
    4. 创建形状,该几何图形对网格进行实例化

    仅提供顶点
    Cooking步骤
    COMPUTE_CONVEX标志来计算网格
    在没有Inflation的情况下,cooking会创建一个凸网格,其顶点是原始顶点的子集,并且顶点的数量保证不超过指定的最大值。Inflation将斜角锐边,这可能会增加超出指定最大值的新顶点。此外,斜角可能会产生小三角形, 首先,它试图在没有Inflation的情况下制造壳 。如果失败,它会尝试Inflation,如果也失败了,则使用AABB或OBB。

     AABB:Axis-Aligned Bounding Box,轴对齐包围盒
     OBB:Oriented Bounding Box,有向包围盒
     包围球:外接球
    

    OBB比包围球和AABB更加逼近物体,能显著减少包围体的个数
    在这里插入图片描述
    凸面cooking应用以下步骤:
    • 清理顶点 - 删除重复项等
    • 查找包含输入集的顶点子集,即顶点有限
    • 如果需要Inflation,斜角锐边并添加其他顶点
    • 为新面创建多边形
    • 计算顶点映射表(每个顶点至少需要 3 个相邻面)
    • 检查多边形数据 - 验证所有顶点都在壳上或壳体内部,等等
    • 计算质量和惯性张量,假设密度为 1
    • 保存数据以进行流式传输

    提供顶点和面
    提供点和面后,相关的SDK 会验证网格并直接创建Convexmesh。这是创建凸网格的最快方法。需要每个顶点至少有 3 个相邻面。

    凸面cooking过程中的内部步骤:
    • 计算顶点映射表,每个顶点至少需要 3 个相邻面
    • 检查多边形数据 - 检查所有顶点是否都在壳上或壳体内部,等等
    • 计算质量和惯性张量,假设密度为 1
    • 保存数据以进行流式传输

    3.2 三角形网格Triangle Mesh

    三角形网格可以说是被使用最多的一种场景的表达形式,与图形三角形网格一样,碰撞三角形网格由顶点和三角形索引的集合组成。
    三角形网格cooking过程如下:
    • 检查输入顶点的有效性
    • 焊接顶点并检查三角形尺寸
    • 为查询创建加速结构
    • 计算边缘凸性信息和邻接
    • 保存数据以进行流式传输

    3.3 高度场Height Field

    高度字段的局部空间轴为:
    行 - X 轴、列 - Z 轴、高度 - Y 轴
    顾名思义,地形只能通过常规矩形采样网格上的高度值来描述:
    每个样本都由一个 16 位整数高度值、两个材质(对于样本矩形中的两个三角形)和一个曲面细分标志组成。
    标志和材质是指下方和采样点右侧的像元,并指示沿哪个对角线将其拆分为三角形,以及这些三角形的材料。
    在这里插入图片描述

    高度场cooking过程如下:
    • 将高度场样本加载到内部存储器中
    • 预先计算边缘碰撞信息
    • 保存数据以进行流式传输

    展开全文
  • 维几何变换

    2020-07-18 22:40:04
    这里我们主要介绍二坐标系下的三种几何变换:刚性变换、相似变换、仿射变换,三者之间的关系如下图所示: 一、刚性变换 刚性变换的最重要特点就是变换前后目标 任意两点间距离不变,包含平移、旋转、翻转...

    图像的二维几何变换主要包含:刚性变换(rigidity)、相似变换(similarity)、仿射变换(affine)。三者之间的关系如下图所示:

    一、齐次坐标

    1、什么是齐次坐标

    齐次坐标就是用一个n+1维向量表示n维向量

    2、为什么要引入齐次坐标?

    仿射变换是指在向量空间中进行一次线性变换(乘以一个矩阵)和一次平移(加上一个向量),变换到另一个向量空间的过程。对于二维坐标系上的一个点(x,y),经过仿射变换后的点的坐标是(u,v),其数学表达式如下:

                               \small \begin{bmatrix} u\\ v \end{bmatrix}=A\cdot \begin{bmatrix} x\\ y \end{bmatrix}+B,其中    \small A=\begin{bmatrix} a &b \\ d& e \end{bmatrix},       \small B=\begin{bmatrix} c\\ f \end{bmatrix}

    缩放和旋转通过矩阵乘法实现,平移通过矩阵加法实现。通常情况下,几何变换不是单一的,一个物体可能涉及平移、旋转、缩放等多个变换,为了减少计算量,可以将多个变换矩阵合并为一个最终变换矩阵M = [ A  B ]。此时几何变换的数学表达式如下:

                                                                    \small \begin{bmatrix} u\\ v \end{bmatrix}=M\cdot \begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} a &b & c\\ d & e & f \end{bmatrix}\cdot \begin{bmatrix} x\\ y \end{bmatrix}

    但我们发现,永远也找不到这样的矩阵M,因为上面的等式是不成立的。为了解决这个问题,我们就增加一个维度,也就是构造齐次坐标矩阵,其数学表达式如下:

                                                                \small \begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=\begin{bmatrix} a & b& c\\ d & e &f \\ 0& 0& 1 \end{bmatrix}=\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}

    由上式看出仿射变换矩阵有a、b、c、d、e、f六个未知数,因此至少需要六个方程来求解,即需要三个坐标点对。

    二、刚性变换

    刚性变换最重要的特点就是变换前后目标 任意两点间距离不变,包含平移、旋转、翻转(镜像)三种

    1、平移

    Halcon中向齐次变换矩阵添加平移分量的算子有以下两个:

    (1)相对于全局(即固定)坐标系执行平移

    hom_mat2d_translate( : : HomMat2DTxTy : HomMat2DTranslate)

    变换矩阵链如下:

    \tiny HomMat2DTranslate=\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}\cdot HomMat2D=\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}\cdot \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}=\begin{bmatrix} a & b & Tx+c\\ d & e &Ty+f \\ 0 &0 & 1 \end{bmatrix}

    (2)相对于局部坐标系(即图像原点,左上角)执行平移

    hom_mat2d_translate_local( : : HomMat2DTxTy : HomMat2DTranslate)

    变换矩阵链如下:

    \tiny HomMat2DTranslate= HomMat2D\cdot\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}= \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}\cdot\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}=\begin{bmatrix} a & b & aTx+bTy+c\\ d & e &dTx+eTy+f \\ 0 &0 & 1 \end{bmatrix}

    注意:齐次矩阵以元组的形式逐行存储,最后一行通常不存储,因为它对于描述仿射变换的所有齐次矩阵都是相同的。如下所示:

                                                                                   \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}

    只存储 [a, b, c, d, e, f]

    (3)

    举例说明两个平移算子的区别:

    dev_close_window ()
    dev_open_window (0, 0, 512, 512, 'white', WindowID)
    dev_set_draw ('margin')
    gen_rectangle1 (Rectangle, 200, 100, 400, 300)
    area_center (Rectangle, Area, Row, Column)
    
    *创建一个齐次单位矩阵,并添加缩放分量
    hom_mat2d_identity (HomMat2DIdentity)
    hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5,  Row, Column, HomMat2DScale)
    
    *相对于全局坐标系平移
    dev_set_color ('green')
    hom_mat2d_translate (HomMat2DScale, 5, 5, HomMat2DTranslate1)
    affine_trans_region (Rectangle, RegionAffineTrans1, HomMat2DTranslate1, 'nearest_neighbor')
    
    *相对于局部坐标系平移
    dev_set_color ('blue')
    hom_mat2d_translate_local (HomMat2DScale, 5, 5, HomMat2DTranslate2)
    affine_trans_region (Rectangle, RegionAffineTrans2, HomMat2DTranslate2, 'nearest_neighbor')
    齐次变换矩阵值
    缩放、平移结果图

    2、旋转(逆时针)

    Halcon中向齐次变换矩阵添加旋转分量的算子有以下两个:

    (1)相对于全局坐标系执行旋转

    hom_mat2d_rotate( : : HomMat2DPhiPxPy : HomMat2DRotate)

    点(Px,Py)是变换的不动点,为了实现这种方式,首先在输入变换矩阵中添加一个平移,将不动点移动到全局坐标系的原点上,然后添加旋转,最后把不动点移到原来的位置。变换矩阵链如下:

    \tiny HomMat2DRotate=\begin{bmatrix} 1 & 0 &+ Px\\ 0 & 1 &+Py \\ 0 &0 & 1 \end{bmatrix}\cdot \begin{bmatrix} cos(Phi)& -sin(Phi) & 0\\ sin(Phi) & cos(Phi) &0 \\ 0 &0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & -Px\\ 0 & 1 &-Py \\ 0 &0 & 1 \end{bmatrix}\cdot HomMat2D

                                  \tiny =\begin{bmatrix} 1 & 0 &+ Px\\ 0 & 1 &+Py \\ 0 &0 & 1 \end{bmatrix}\cdot \begin{bmatrix} cos(Phi)& -sin(Phi) & 0\\ sin(Phi) & cos(Phi) &0 \\ 0 &0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & -Px\\ 0 & 1 &-Py \\ 0 &0 & 1 \end{bmatrix}\cdot\begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}

                                  \tiny =\begin{bmatrix} cos(Phi)& -sin(Phi)& -Pxcos(Phi)+Pysin(Phi)+Px\\ sin(Phi)& cos(Phi)&-Pxsin(Phi)-Pycos(Phi)+Py \\ 0& 0 & 1 \end{bmatrix}\cdot\begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}

    (2)相对于局部坐标系执行旋转(变换的不动点是局部坐标系的原点)

    hom_mat2d_rotate_local( : : HomMat2DPhi : HomMat2DRotate)

    变换矩阵链如下:

    \tiny HomMat2DRotate= HomMat2D\cdot\begin{bmatrix} cos(Phi)& -sin(Phi) & 0\\ sin(Phi) & cos(Phi) &0 \\ 0 &0 & 1 \end{bmatrix}

                                   \tiny = \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}\cdot\begin{bmatrix} cos(Phi)& -sin(Phi) & 0\\ sin(Phi) & cos(Phi) &0 \\ 0 &0 & 1 \end{bmatrix}

                                   \tiny =\begin{bmatrix} acos(Phi)+bsin(Phi) & -asin(Phi)+bcos(Phi) & c\\ dcos(Phi)+esin(Phi) & -dsin(Phi)+ecos(Phi) &f \\ 0 &0 & 1 \end{bmatrix}

    (3)那么旋转矩阵是怎么推导出来的呢?如下所示:

    在极坐标系下一个点,用长度r与角度\tiny \phi表示,在直角坐标系下用(x,y)坐标表示,两者之间的关系如下所示:

    \small x=rcos\phi

    \small y=rsin\phi

    此时该点旋转角度\small \theta得到一个新的点,如下所示:

    \small x^{'}=rcos\left ( \phi+\theta \right )=rcos\phi cos\theta -rsin\phi sin\theta=xcos\theta-ysin\theta

    \small y^{'}=rsin\left ( \phi+\theta \right )=rcos\phi sin\theta +rsin\phi cos\theta=xsin\theta+ycos\theta

    根据上式得出:

                                                 \small \begin{bmatrix} x'\\ y^{'} \end{bmatrix}=\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta& cos\theta \end{bmatrix}\cdot \begin{bmatrix} x\\ y \end{bmatrix}

    因此旋转矩阵为:

                                                                  \small \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta& cos\theta \end{bmatrix}

    (4)举例说明两个旋转算子的区别:

    dev_close_window ()
    dev_open_window (0, 0, 512, 512, 'white', WindowID)
    dev_set_color ('black')
    
    
    gen_rectangle2 (Region, 300, 200, -0.5, 100, 2)
    area_center (Region, Area, Row, Column)
    
    *创建一个齐次单位矩阵
    hom_mat2d_identity (HomMat2DIdentity)
    
    *相对于全局坐标系平移
    dev_set_color ('red')
    hom_mat2d_rotate (HomMat2DIdentity, -0.3, Row, Column, HomMat2DRotate1)
    affine_trans_region (Region, RegionAffineTrans1, HomMat2DRotate1, 'nearest_neighbor')
    
    *相对于局部坐标系平移
    dev_set_color('green')
    hom_mat2d_rotate_local (HomMat2DIdentity, -0.3, HomMat2DRotate2)
    affine_trans_region (Region, RegionAffineTrans2, HomMat2DRotate2, 'nearest_neighbor')
    齐次变换矩阵值
    旋转结果图

    3、反射(镜像)

    Halcon中向齐次变换矩阵添加反射分量的算子有以下两个:

    (1)相对于全局坐标系执行反射,轴(Px,Py)-(Qx,Qy)在变换中是固定的。

    hom_mat2d_reflect( : : HomMat2DPxPyQxQy : HomMat2DReflect)

    (2)相对于局部坐标系执行反射,轴(0,0)-(Px,Py)在变换中是固定的。

    hom_mat2d_reflect_local( : : HomMat2DPxPy : HomMat2DReflect)

    (3)Halcon中提供了直接镜像的算子,有  'row','column','diagonal'三种镜像方式

    mirror_image(Image : ImageMirror : Mode : )

    三、相似变换

    相似变换最重要特点就是变换前后目标 形状不变相比刚性变换,相似变换主要增加了等比缩放

    Halcon中算子如下:

    vector_to_similarity( : : PxPyQxQy : HomMat2D)

    根据两个以上点对近似得到一个相似变换矩阵,包含平移、旋转、等比缩放。

    四、仿射变换

    仿射变换改变物体位置和形状,但是保持“平直性”(平行线依然保持平行)。相比相似变换,仿射变换主要增加了切变(也叫斜切、错切)、缩放(不要求等比)

    1、斜切

    Halcon中向齐次变换矩阵添加斜切分量的算子有以下两个:

    (1)相对于全局坐标系执行斜切

    hom_mat2d_slant( : : HomMat2DThetaAxisPxPy : HomMat2DSlant)

    一个坐标轴保持不变,另一个坐标轴逆时针旋转角度Theta。参数Axis决定哪个坐标轴倾斜。对于Axis='x',x轴倾斜,y轴保持固定;而对于Axis='y',y轴倾斜,x轴保持固定。变换矩阵链如下:

                                             \small Axis='x':HomMat2DSlant=\begin{bmatrix} cos(Theta) & 0 & 0\\ sin (Theta) & 1&0 \\ 0& 0& 1 \end{bmatrix}\cdot HomMat2D 

                                            \small Axis='y':HomMat2DSlant=\begin{bmatrix} 1 & -sin(Theta) & 0\\ 0 & cos(Theta)&0 \\ 0& 0& 1 \end{bmatrix}\cdot HomMat2D

     点(Px,Py)是变换的不动点,为了实现这种方式,首先在输入变换矩阵中添加一个平移,将不动点移动到全局坐标系的原点上,然后添加旋转,最后把不动点移到原来的位置。当Axis='x'时,变换矩阵链如下:

                            \small HomMatSlant=\begin{bmatrix} 1 & 0&+Px \\ 0 & 1 &+Py \\ 0 & 0& 1 \end{bmatrix}\cdot \begin{bmatrix} cos(Theta) & 0 & 0\\ sin (Theta) & 1&0 \\ 0& 0& 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & -Px\\ 0 & 1 & -Py\\ 0& 0& 1 \end{bmatrix}\cdot HomMat2D

    (2)相对于局部坐标系执行斜切

    hom_mat2d_slant_local( : : HomMat2DThetaAxis : HomMat2DSlant)

    变换矩阵链如下:

                                             \small Axis='x':HomMat2DSlant=HomMat2D \cdot \begin{bmatrix} cos(Theta) & 0 & 0\\ sin (Theta) & 1&0 \\ 0& 0& 1 \end{bmatrix} 

                                            \small Axis='y':HomMat2DSlant=HomMat2D \cdot \begin{bmatrix} 1 & -sin(Theta) & 0\\ 0 & cos(Theta)&0 \\ 0& 0& 1 \end{bmatrix}

    2、缩放

    Halcon中向齐次变换矩阵添加反射分量的算子有以下两个:

    (1)相对于全局坐标系执行缩放。

    hom_mat2d_scale( : : HomMat2DSxSyPxPy : HomMat2DScale)

    变换矩阵链如下:

                     \small HomMat2DScale=\begin{bmatrix} 1 & 0&+Px \\ 0 & 1 &+Py \\ 0 & 0& 1 \end{bmatrix}\cdot \begin{bmatrix} Sx & 0 & 0\\ 0& Sy&0 \\ 0& 0& 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & -Px\\ 0 & 1 & -Py\\ 0& 0& 1 \end{bmatrix}\cdot HomMat2D

    (2)相对于局部坐标系执行缩放。

    hom_mat2d_reflect_local( : : HomMat2DPxPy : HomMat2DReflect)

    变换矩阵链如下:

                                            \small HomMat2DScale=HomMat2D \cdot \begin{bmatrix} Sx & 0 & 0\\ 0& Sy&0 \\ 0& 0& 1 \end{bmatrix}

    五、Halcon中其它几何变换相关算子

    1、根据仿射变换矩阵计算仿射变换参数

    hom_mat2d_to_affine_par( : : HomMat2D : SxSyPhiThetaTxTy)   

    2、对像素坐标应用任意仿射二维变换,输入和输出都是亚像素精度,图像坐标系的原点在图像的左上角

    affine_trans_pixel( : : HomMat2DRowCol : RowTransColTrans)

    3、对像素坐标应用任意仿射二维变换,输入和输出都是像素精度,标准图像坐标系,原点在左上角像素的中心

    affine_trans_point_2d( : : HomMat2DPxPy : QxQy)

    4、根据点和角度计算刚性变换矩阵,支持旋转和平移

    vector_angle_to_rigid( : : Row1Column1Angle1Row2Column2Angle2 : HomMat2D)

    5、根据两个以上点对计算刚性变换矩阵,支持旋转和平移

    vector_to_rigid( : : PxPyQxQy : HomMat2D)

    6、根据三个以上点对计算仿射变换矩阵,支持旋转、平移、缩放、斜切

    vector_to_hom_mat2d( : : PxPyQxQy : HomMat2D)

    7、计算齐次二维变换矩阵的行列式

    hom_mat2d_determinant( : : HomMat2D : Determinant)

                                      

    参考文章: https://blog.csdn.net/shuzfan/article/details/69840589

                       https://zhuanlan.zhihu.com/p/102814853

                       https://zhuanlan.zhihu.com/p/80852438

                      http://blog.sina.com.cn/s/blog_c01c55220102yptp.html

     

    展开全文
  • 一、几何变换的概念 几何变换又称建模变换,指只改变组成形体的几何元素的几何信息(大小、形状、相对位置),而不改变图形拓扑信息的变换。 图形变换模式: (1)坐标系不动,图形变动(以下内容采用这种模式) (2...

    一、几何变换的概念
    几何变换又称建模变换,指只改变组成形体的几何元素的几何信息(大小、形状、相对位置),而不改变图形拓扑信息的变换。
    图形变换模式:
    (1)坐标系不动,图形变动(以下内容采用这种模式)
    (2)图形不动,坐标系变动
    图形学中这些基本变换通过矩阵实现。

    二、基本几何变换:相对于坐标原点和坐标轴的平移、旋转、缩放(变比)、投影。
    将参与变换的点写成向量的形式,如列向量:
    在这里插入图片描述
    1.二维平移变换
    将点(x,y)平移到点(x’,y’)
    在这里插入图片描述
    2.二维旋转变换
    需要指定旋转的基准点(绕那个点旋转)和旋转的角度(逆时针为正,顺势针为负)。
    在这里插入图片描述
    写成矩阵的形式:
    在这里插入图片描述
    3.二维缩放变换(讨论相对于坐标原点的简单缩放)
    缩放变换又称比例变换。
    假设将x方向上的坐标相对于坐标原点放大Sx倍,将y方向上的坐标相对于坐标原点放大Sy倍,则有:
    在这里插入图片描述
    注意:缩放变换不仅改变图形的大小,还改变图形与坐标原点的距离,所以在进行缩放变换时要考虑缩放后的图形是否能在窗体内正常显示。
    缩放的几种情况:
    在这里插入图片描述
    可以观察到,平移使用的矩阵加法,而旋转、缩放使用的是矩阵乘法,为了将三种变换使用的矩阵运算统一起来,引入齐次坐标。

    三、齐次坐标
    基本思想:将n维空间的几何问题转换到n+1维空间去解决
    定义:用一个n+1个分量去表示一个有n个分量的向量的方法
    笛卡尔坐标系二维点:p(x,y)对应的齐次坐标点为p(hx,hy,h),其中h是任一不为0的比例系数,当h=1时,称为规格化齐次坐标。
    可以看出(1)笛卡尔坐标与齐次坐标的关系是“一对多”。
    (2)给定一个点的齐次坐标表示(x,y,h),该店的二维笛卡尔直角坐标为(x/h,y/h)。

    引入齐次坐标后点平移的矩阵变换为:
    在这里插入图片描述
    上图将点p(x,y)平移到点p’(x+tx1,y+ty1)。
    逆时针旋转:
    在这里插入图片描述
    缩放:
    在这里插入图片描述

    四、二维反射(对称)变换
    物体的反射一般是相对于一个对称轴生成的。
    例如,相对于x轴的对称:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    点p(x,y,1)相对于直线y=x对称后的坐标为(y,x,1),点p(x,y,1)相对于直线y=-x对称后的坐标为(-y,-x,1)。
    如果给定的直线不是y=x或y=-x,而是平面中任意的一条直线,则一个点关于该直线做对称变换使用二维复合变换。

    五、复合变换
    复合变换由若干个基本变换组合而得的变换,将每一个基本变换左乘在变换点的矩阵坐标上。
    1.复合平移
    平移两次的坐标变换:
    在这里插入图片描述
    2.复合旋转
    先后绕原点旋转逆时针两次不同的角度
    在这里插入图片描述
    3.复合缩放
    在这里插入图片描述
    4.相对于任意点的缩放变换
    在这里插入图片描述
    注意:矩阵对应变换的位置是从右到左。
    矩阵满足结合律不满足交换律,所有矩阵的位置不能随意变换。

    5.相对于任意直线的对称变换
    步骤:
    在这里插入图片描述
    五步对应的矩阵:
    在这里插入图片描述
    在这里插入图片描述

    6.二维变换的应用:坐标系间的变换
    在这里插入图片描述
    问题解决:
    在这里插入图片描述
    在这里插入图片描述
    可以发现坐标系间的变换与点在坐标系间的变换正好相反。

    二、三维几何变换
    三维空间的齐次坐标
    在这里插入图片描述
    原理相同,基本变换使用一个四维矩阵,复合变换使用多个四维矩阵相乘,且按变换顺序从右到左放置。
    例如:相对于任意点的缩放:
    在这里插入图片描述
    1.三维空间的旋转
    指定旋转轴(绕哪个轴旋转)和旋转角度。
    例如绕z轴旋转,点p(x,y,z)绕z轴逆时针旋转一个角度,点的z坐标值不变,x,y值与在二维平面的旋转相同:
    在这里插入图片描述
    矩阵形式:
    在这里插入图片描述
    同理,绕x轴旋转:
    在这里插入图片描述
    在这里插入图片描述
    绕任意一条直线旋转(方法是将该直线进行变换使其与坐标轴重合在进行变换):
    在这里插入图片描述
    这里需要注意两个问题:
    (1)在变换旋转轴时要注意旋转轴的正方向,即若该旋转轴由p1,p2两点确定,且p1指向p2的方向为旋转轴正方向,则旋转轴变换后其正方向要与坐标轴的正方向重合;
    (2)当将旋转轴移至过坐标原点时,如果此时该直线没有位于任意坐标平面(如x0y,x0z,y0z)内,则不能只通过一次旋转变换与坐标轴重合,而需要经过两次。
    在这里插入图片描述步骤的矩阵实现:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    2.三维空间的对称
    三维空间下的对称是关于某一个平面的对称,常用对称平面是坐标平面,矩阵表示为:
    在这里插入图片描述

    三、OpenGL提供了相关函数来实现平移,旋转和缩放变换。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • ylbtech-学术-几何-维:超级立方体 (五维超级超立方体) 五维超级超立方体即五维超级超正方体(超超立方体) 五维超级超立方体,在几何学中五维方体是立方体的五维类比,五维方体之于四维超立方体,四维超...
  • 作者最近提出了一种用于显式计算CY模空间量度的新方法。 该方法利用了模空间与某个Frobenius代数的联系。 在这里,我们通过计算绕双折点的三重五边形的101模空间的特殊几何形状,来阐明这种方法并证明其效率。
  • 我们研究了五维超重力中一类新的超对称解,该超对称解表示共维2振子沿任意曲线的多中心构型。 Codimension-2麸皮是在一般情况下通过超管效应从高等维度的普通麸皮中生产出来的,当它们是奇异的麸皮时,时空通常会...
  • 计算机图形学-二图形-几何变换

    千次阅读 2020-10-13 16:19:14
    图形变换:是一种几何变换,在二图形处理过程中,常常需要对平面图形的形状,尺寸,显示方向和显示位置进行修改,来达到改变图形的目的。 几何变换:是一种先行变换,对原来图形中的一点坐标通过变换生成一个新的...
  • 在本文中,讨论了建立五维四阶重力模型的可能性,该模型的低维还原可以为宇宙学四维物质-能量分量的解释。 我们描述了模型的基本概念,完整的场方程形式和5维到4维的还原过程。 五维f(R)场方程在正交于额外坐标的...
  • 本文提供了一种简单有效的基于立体的单级三检测管道,以端到端学习的方式联合估计深度和检测三物体。
  • 维几何变换(平移、旋转、缩放)本章涉及数学变换比较多,代码是次要的,数学理论可自己推导一下。【二维平移】通过将二维量加到一个点的坐标上来生成一个新的坐标位置,可以实现一次平移。将平移距离加到原始坐标...
  • 坐标系间的变换1. 二坐标系间的变换下节的二观察中,会涉及到从观察坐标系到世界坐标系的变换,因此我们介绍从一个笛卡尔坐标系xy,变换到另一个笛卡尔坐标系(x’,y’)的思想。其中x’y’坐标系用xy坐标的...
  • 全书共分章:前四章是根据克莱因的变换群观点,以射影变换为基本线索,介绍一和二射影几何的基本内容和射影观点下的仿射几何与欧氏几何理论,其中重点讨论二次曲线的射影、仿射和度量理论,以明确各几何学的...
  • 多视图几何重建的基本原理: 从两个或者多个视点观察同一景物,已获得在多个不同的视角下对景物的多张感知图像,运用三角测量的基本原理计算图像像素间位置偏差,获得景物的三深度信息,这一个过程与人类...
  • 简单的图形变换实验,二角星平移旋转,缩放,错切等
  • 我们研究了存在一阶α'-校正的非均质超重力中核的T-对偶链。 通过对异质NS5-branes溶液进行α'-校正的T-对偶变换,我们得到了与对称,中性和标准NS5-branes相关的KK5-brane和奇异的5 2 2 -brane溶液。 我们发现,...
  • 原标题:一张图让你看清楚从0到10的终极解释长假期间,知著转发了一篇关于《一张图弄明白从零维到十维空间》,没想到引发了最火爆的转发,目前为止,有50多万的点击率,评论也有数百条。该文的原文是转自公号...
  • 本文为“3D视觉创新应用(三重建)竞赛”作品集系列之一,该作品由来自湖南大学团队完成,团队成员:彭以平,陶梓铭,袁毓聪,王世勋,谈畅。全文约3088个字,阅读时长约8分钟,旨在为更多开发者提供学习参考。
  • 内容是三欧氏空间微分几何学。第一章简单叙述了《微分几何讲义(修订版)/高等学校教材》所需用的有关矢函数的知识;第二章到第四章是曲线理论;第章初步介绍可展曲面,作为曲线理论与曲面理论的桥梁;第六章到...
  • 多视图几何中的三重建

    千次阅读 2020-09-21 11:05:27
    1)B站多视图几何重建视频讲解:https://www.bilibili.com/video/BV1Sj411f73e 2)武汉大学摄影测量与遥感专业博士李迎松的CSDN: https://blog.csdn.net/rs_lys/article/list/1 涉及的内容主要是 sfm, Patch...
  • 计算机图形学中图形几何变换的程序+实验报告。程序用MFC编写,可以实现旋转,错切,平移,对称。程序运行通过。
  • 基于多视图几何的三重建

    千次阅读 2021-07-29 15:00:39
    而基于计算机视觉的多视图几何三维重建,不需要相机按特定的轨迹运动,也不需要对相机进行预标定,可以从不同视角获取目标物体的多幅视图,从视图中提取目标物体的三维几何约束信息,利用约束信息即可实现景物的三维...
  • 空间几何坐标变换矩阵.ppt

    千次阅读 2021-01-17 16:49:12
    三维空间几何坐标变换矩阵第7章 三维变换 7.1 简介 7.2 三维几何变换 7.3 三维坐标变换 7.1 简介 三维平移变换、比例变换可看成是二维情况的直接推广。但旋转变换则不然,因为我们可选取空间任意方向作旋转轴,因此...
  • 本文由@浅墨_毛星云出品,首发于...在基于物理的渲染中,几何函数(Geometry Function)是保证Microfacet BRDF理论上能量守恒,逻辑上自洽的重要一环。其描述了微平面自阴影的属性,表示具有半矢量法线的微平面(...
  • 这些观察结果使我们推测蝶形速度在二减小下通常是不变的。 在本文的第二部分,我们研究了具有任意物质场的爱因斯坦-高斯-贝内特引力的蝶形速度。 得到一个通用公式。 我们使用此公式来计算不同背景下的蝶形速度,...
  • 实用微分几何引论

    2019-01-03 12:29:45
    《实用微分几何引论》以三空间的向量运算和微分几何为理论基础,以几何学在生产实际中的一些应用为主要内容,论述了微分几何在机械设计和加工、船体的设计和制造等方面的一些应用。 全书共分八章,第一、二、四章...
  • 实验 图形几何变换的实现班级 08信计2班 学号 82 姓名 分数一、实验目的和要求:1、...二、实验内容:1、利用二维变换矩阵实现平移变换2、三维几何变换中比例变换和旋转变换,分别绕Z,X,Y轴变换3、三维几何变换...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,284
精华内容 10,513
热门标签
关键字:

五维几何