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

两个平行线的交点就是无穷远点。求解的方法就是把直线的方向向量(向量我们都用列向量表示)拿到,然后给最后一维加个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. matlab球面波衍射,单色点源矩孔菲涅耳衍射光场的计算与模拟
  2. 手把手教你安装VMware虚拟机
  3. AndroidStudio_安卓原生开发_什么是AndroidStudio NDK ---Android原生开发工作笔记140
  4. step7设置pcpg_STEP7 PC/PG设置的疑惑
  5. 国家哲学社会科学文献中心
  6. xshell/putty 连接 linux 虚拟机 connection failed 的解决方案
  7. 线性回归公式推导与代码实现
  8. AFR 去嵌 Deeembedding 软件工具
  9. 美国苹果股价走势图(抢先看美股三大指数新动态)
  10. 使用矩阵分解找到相似歌曲
  11. 华为云从入门到实战 | 云速建站服务与企业主机安全服务
  12. 2021年2月28日【Jiawei_Z】Ethercat的整个实现过程(举例:Lan9252)
  13. NS3学习记录(四)--加入新模型及聚合Aggregate
  14. Myeclipse10怎么找到 Servers
  15. android系统优化排行,性能最强的10大安卓手机排行,你用的排第几?
  16. Java 从多线程到并发编程(五)—— 线程调度 优先级倒置(反转) 阻塞 死锁 suspend
  17. java 有五个学生 每个学生有3门课_1、有五个学生,每个学生有3门课(语文、数学、英语)的成绩, 写一...
  18. 复选框checkbox如何判定为被选中
  19. Ping++和BeeCloud的比较
  20. 【背包专题】01背包

热门文章

  1. tortoisesvn安装包和汉化包
  2. 计算机毕业设计php_thinkphp_vue的家乡石泉网站-乡村家乡旅游信息网站
  3. 根据图片的URL生成PDF保存到服务器上(后台C#实现)
  4. java三大特性、五大原则
  5. SAP ABAP 业务对象 BUS6021 AcctngSalesOrder 会计销售订单 BAPI 清单和相关 TCODE
  6. Java基础:缓冲流
  7. 简述8086计算机工作原理,微机原理及应用习题库与答案
  8. 2021年上半年信息系统项目管理师真题与答案完整版(综合知识、案例分析、论文)
  9. java康纳塔22s评测_Pico G2 4K和奇遇2s的测评对比 上
  10. 【UML】——构件图