求两个平行线的无穷远点,最简单的方法(二维空间和三维空间都适用)

两个平行线的交点就是无穷远点。求解的方法就是把直线的方向向量(向量我们都用列向量表示)拿到,然后给最后一维加个0就是它们的交点(无穷远点)。这里都是在齐次坐标系下的表示,因为无穷远点只能在齐次坐标系下才能表示。无穷远线或者无穷远面(3维空间才有)就是一个向量(我们把直线方程Ax+By+C=0的系数A,B,C拿出来组成一个向量,我们就称这个向量为这个直线,所说的无穷远线也就是指这个系数向量,无穷远面同理),这个向量的最后一维为1,其余维为0。
补充:
设直线方程Ax+By+C=0,它的直线方向向量可表示为(B,-A),那么与它垂直的向量(法向量)表示为(A,B)

影消点:三维空间中的无穷远点(无穷远点就是一个平面上两条平行线的交点)在图像平面上的投影点称作影消点,投影到图像平面后不再是个无穷远点,因为相机投影到图像平面是透视变换,会让平行线不再保持平行。影消点的单位是像素。
影消线:无穷远线(无穷远线是指在一个平面上,无穷远点连起来构成的直线,一个平面有且对应一条无穷远线)在图像上的投影(透视变换)称作影消线,也就是影消点构成的线。一个平面对应一条影消线。影消线的单位是像素。

2D平面上的变换

2D平面上的欧式变换
等距变换就是原来有A和B两个点,A和B两个点经过了上述这个变换后,变换后的A和B两个点的距离还是和变换前一样。下图中左边是欧式坐标系(欧式就是二维坐标系)的表示,右边是齐次坐标系的表示。后面我们都只讨论齐次坐标系的情况。

上图中等距变换矩阵里的σ取1和取-1时对应着两种不同的关系。σ取1叫保向变换(就是旋转变换),σ取-1时叫逆向变换(就是镜像变换)。σ取1的等距变换叫做欧式变换,即把一个点进行旋转+平移,这个矩阵相当于一个先旋转后平移的复合操作。

2D平面上的相似变换

如下图所示,把均匀伸缩变换和欧式变换乘到一起就得到了相似变换,即先做一个欧式变换再做一个伸缩变换。相似变换就是旋转缩放平移。变换前后平行关系会保持,角度关系也会保持。

2D平面上的仿射变换
相似变换矩阵中的A是sR,R是一个旋转矩阵,旋转矩阵就必须满足某些固定的要求,得是正交矩阵,向量之间要正交,每个向量的模为1。如果把A随便设置,不再满足sR了,只要A是个满秩的矩阵都行,就得到了一个仿射矩阵,变换前后平行关系还是会保持,但是角度关系不保持了。

2D平面上的透视变换
透视变换前后平行关系不会保持了。只能保持原来是一个点映射后也还是一个点,原来是个线映射后也还是一个线,原来在同一个平面的东西映射后也还是在同一个平面上。

3D空间上的变换

3D空间上的相似变换
3D空间中变换就是3维到3维的变换,下图的变换也就是一个相似变换,只不过相似变换矩阵中的旋转矩阵有三个轴,所以R矩阵是3乘3的矩阵,s还是缩放因子,t还是平移量,但在三维空间中就是三个平移量了。0这有个转置T是因为所有的向量我们都默认表示为列向量。

3D空间上的仿射变换
同2维的仿射变换类似,也是把仿射矩阵中的A拓宽一下变成下图中的样子。下图中的无穷远点是什么意思呢?是因为平行线是会相交的,交点就在无穷远点处。

3D空间上的透视变换
同二维中的透视变换类似

2D平面上的变换和3D空间中的变换以及求无穷远点相关推荐

  1. python 3d绘图平面_python 用 matplotlib 在 3D 空间中绘制平面 实例详解

    #创建画布 fig = plt.figure(figsize=(12, 8), facecolor='lightyellow')#创建 3D 坐标系 ax = fig.gca(fc='whitesmo ...

  2. 2D平面上的二连杆机器臂反向运动模拟(matlab代码示例)

    2D平面上的二连杆机器臂反向运动模拟 matlab上先下载 robotics system toolbox工具箱 robot = rigidBodyTree('DataFormat','column' ...

  3. 3D空间中的点坐标转化为屏幕二维点坐标(一)

    每个人在进入计算机图形学的世界中,都有一个同样的困惑,三维世界中的三维坐标是如何被转换成屏幕上的二维坐标的,我如何在屏幕上找到一个点(二维点)对应三维世界中的点(三维点)呢? 要理解其中的过程,对学习 ...

  4. 用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影

    要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换.以下是一些基本的思路和示例代码,可以用于实现主视图.侧视图.俯视图.正等轴投影. 1. 主视图投影 主视图投影是指以一个点作为 ...

  5. 使3D空间中物体朝向和其速度方向一致的旋转矩阵计算方案

    在3D空间中的物体以某一速度运动,有时候需要这个物体的朝向和速度的方向一致, 为了实现这个目标我们一般借助旋转矩阵 M 来将物体旋转到对应的朝向. 例如速度方向矢量 spdV: Vector3D(1, ...

  6. 使用脑电图慢皮层电位重建3D空间中的手,肘和肩的实际和想象的轨迹

    导读 从神经活动中解码想象运动的运动学的能力对于开发可以帮助行动不便的人的假肢设备至关重要.当前采用脑电图(EEG)等无创记录方法解码实际和想象的手运动轨迹来控制神经运动假体,通常通过应用多维线性回归 ...

  7. 【学习OpenGL】(三)——3D空间中的点与线

    一.3D空间中的点 #include <gl/glut.h> #include <math.h>#define GL_PI 3.1415fstatic GLfloat xRot ...

  8. 在3D空间中绘制四边形

    在3D空间中绘制四边形 四边形 GL_QUADS OpenGL的GL_QUADS图元用于绘制四边形,它根据每四个顶点绘制一个四边形. 注意,在使用四边形时,必需记住一个重要规则:一个四边形的四个角必须 ...

  9. 3D 空间中拟合曲线

    算法来源:C++/PCL:最小二乘拟合平面直线,平面多项式曲线,空间多项式曲线 以下是我改写的算法,未经验证正确性!!! // 3D 空间中拟合曲线 void fittingPolynomial3D( ...

最新文章

  1. 如何选择阿里云服务器配置?
  2. linux 编译内核几个常见问题解决方法
  3. MASK-RCNN学习一:(数据集/原理介绍)
  4. AUTOSAR从入门到精通100讲(三十六)-AUTOSAR 通信服务两步走-CanSM概念-配置及代码分析
  5. 全国计算机等级考证管理系统,猎证全国计算机等级考试学习系统
  6. jenkins 设置 gitlab web hooks
  7. c++中sort()及qsort()的使用方法总结
  8. 城市智慧灯杆解决方案
  9. 稳定性及性能调优<二十四>-------性能优化3【页面加载耗时优化实战、页面滑动流畅度FPS优化实战】
  10. pygame 实现 pong 小游戏
  11. mybatis insert返回自增主键的id值
  12. NOIP模拟赛 czy的后宫4
  13. Centos自动登录
  14. ubuntu12.04遭遇rootkit病毒解决办法
  15. TCR历史论文多久能发表?
  16. 布道微服务_17服务调用失败的解决方案
  17. Pandas 最全的使用方式(下)
  18. secureCRT是什么
  19. Upload labs
  20. I:nico和niconiconi(dp)

热门文章

  1. Tomcat 组成与工作原理总结
  2. 树莓派Android系统下串口GPS模块驱动
  3. 经理的工作岗位职责描述10篇
  4. Unity使用VS编辑器打开项目失败解决办法
  5. Struts2:OGNL表达式
  6. ts多个type合并, 属性不唯一合并冲突问题
  7. AllenNLP源码拓展——中文分词
  8. Sybase数据库迁移数据到Oracle(未改进)
  9. 伸个懒腰舒服舒服:办公室里的麦肯切尔健身法(ZZ)
  10. 明解C语言 入门 课后习题练习答案 第一章