1.需求分析

  在项目中,需要识别小车三个轮子的相对位置,这就需要对小车抽象出来的二维世界坐标进行缩放平移翻转,并将其转换到控件坐标显示到屏幕上。

2.解决需求

将小车抽象为二维坐标系的一个点P,完成对应数学模型的搭建,实现下列功能:

  1. 平移变换。
  2. 另取任意一点C作为缩放中心,对P坐标进行缩放变换。
  3. 沿X轴对称变换。
  4. 实现一个三角形从世界坐标系转换到屏幕坐标系,并正常显示.

3.解决问题

1.平移Translation

设平移的距离为t x和 t y  ,原始坐标为P(x, y),则将t x t y加到原始坐标,可得一个新的坐标位置P’(x', y'),即实现二维坐标系的平移,如下图所示。

其表达式可为:

x'=x+tx                  y'=y+ty

将一对平移距离( tx , ty ),称为平移向量T。 则可使用下面的列向量来表示坐标位置和平移向量,然后将方程表示成单个矩阵等式。表达成:

   ;                              '   ;                               

2.缩放(Scaling

改变一个对象的大小,可使用缩放变换。一个简单的二维缩放操作可通过将缩放系数sx  和 sy与原始坐标位置P(x, y)相乘而得。

其表达式可为:

                  

缩放系数Sx 在x方向缩放对象,而Sy在y方向进行缩放。基本的二维缩放方程也可以写成矩阵形式:

                                                                   

3. 平移、缩放变换拓展

在上面,我们已经完成缩放操作,但还是具有一定的局限性,当  , 都大于1时,缩放后的坐标位置远离原点O,反之则靠近原点O,这是十分不利的。

于是,我们根据所查资料,使用了固定点(Fixed point)的概念,即缩放变换后不改变位置的点,用以控制缩放后对象的位置,固定点可以是坐标系内的任意一点,这里我们设为点C

实现过程如下,先进行坐标轴的平移,即将点C作为新的坐标原点,并以C点作为缩放中心,将点P进行缩放,再还原坐标轴得到P‘(x’,y’),如下图所示

推导公式如下:

  1. 将C作为坐标原点:

点C(x,y) => C(x-, y-)

点P(x,y) => P(x-, y-)         点o(0,0) => 点o(-, -)

2.缩放,得到点P’,0’

点P(x-, y-) => P’(  ,  )

点o(- , -) => 点o’( )

3.还原缩放中心,获得实际的坐标:

 P()

=》实际坐标P’(, )

 点o’()

=》实际坐标点o’(,)

综上:

其表达式可为:

                      

3. 对称变换

沿着X轴对称变换。

其表达式可为:

                  

4.问题应用

任意三、多边形的缩放翻转平移,将其世界坐标转换到屏幕坐标。

  先前讨论的均在世界坐标系当中,但在实际应用场景中,则需要将对象的世界坐标转换成屏幕坐标。

上图为世界坐标系和屏幕坐标系,可以看出屏幕坐标系和世界坐标系是不一样的,屏幕坐标系中以左上角为原点(00),大部分的操作系统如WindowsAndroidSymbian都是使用这个方案。

  现假设世界坐标系有一三角形对象(其3个顶点分别为P1,P2,P3),想将其转换显示到屏幕上,需要进行下列操作。

1.选定区域。

选定一矩形区域,作为三角形的边界,需要注意的是矩形的尺寸需要略大于三角形。矩形的4个顶点分别为(C1,C2,C3,C4.

2.将世界坐标系变换到屏幕坐标系

由于屏幕坐标系和世界坐标系不同,所以需要对世界坐标系进行翻转操作,再使用镜像对称(注意:这里的镜像对称并不改变实际坐标,仅起到方便观察作用)

3.正确的显示到屏幕上

 实际生活中,屏幕是由一个一个像素点构成的,且有大小限制,需要通过计算得到合适的参数,对转换后的图像进行平移缩放。

计算如下:

(1)移动到合适位置。

在应用中,我们一般先移动图像,将矩阵的中心点与屏幕中心点重合,如下图所示可得,屏幕中心点为()矩阵的中心点为();

   则位移距离:                

 

综上,表达式可为:

                                             …  …

(2)采用对角线法确定缩放比例

使用两点间距离公式

可以得到矩形区域和屏幕的对角线长度,分别设为

则表达式可为:

*其中,中xs1可取0

另设为缩放系数

S2(2)可知屏幕可视区域的为*,如下图所示,若要将图像铺满,则需进行矩形区域进行缩放。

由于屏幕的形状也是矩形,可以考虑通过缩放,使得C2 (+, +)

点跟S2()点重合,既可铺满,计算如下:

得到了缩放比例,即可计算三角形三个顶点坐标:

… …

需要注意的是,要正常显示,屏幕的对角线长度应大于等于缩放之后的矩形区域对角线长度。

条件如下:

                        

步骤如下:

简单的一些二维坐标系构建数学模型相关推荐

  1. c语言利用二维数组制作地图,用程序实现RPG背景地图二维数组构建

    朱艳萍 摘要:该文主要阐述了前端RPG开发中,当作为背景的地图较为复杂时,如何用程序的方法构建与背景地图一致的二维数组,采用图文结合论述其算法,并使用原生JavaScript语言实现. 关键词:二维数 ...

  2. 二维坐标系空间变换(详细解读,附MATLAB代码)

    二维坐标系空间变换 参考链接: 代码资源: 假如存在任意两个二维坐标系,如下图所示: 目的:将xoy坐标系经过处理变换到XOY坐标系. 经过分析可知:对于二维平面上的变换需要 x y 方向上两个平移参 ...

  3. VB6 简单实现 支付宝二维码扫马支付

    VB6 简单实现 支付宝二维码扫马支付 完整源码如下 Private Declare Function 初始化 Lib "alipay.dll" (ByVal 服务器 As Str ...

  4. Java 在二维坐标系绘制矩形、圆形、多边形

    最近遇到一个需求,大概要求是:根据前端传递的参数,在Java侧绘制虚拟的二维封闭图形,判断各个图形间是否有交集. 在java.awt包下有个名为Shape的接口,可以实现在二维坐标系内绘制相关图形,相 ...

  5. (C++)二维坐标系下,计算两点之间方位角

    (C++)二维坐标系下,计算两点之间方位角 思路 代码 思路 将其中点ori视为坐标原点,求点p相对其方位角 代码 double GlobalSettings::GetPointHAngle(Poin ...

  6. html二维坐标系转换,旋转坐标系 转换工具

    旋转坐标系转换工具 假设3D 点的坐标 P, 在已知 x-y-z坐标参考框架: (x,y,z). 1)我们现在想知道在 P 的坐标 x'-y'-z'坐标参考框架, 这是旋转θ 周围的弧度z/z' '轴 ...

  7. 史上最简单的图片二维码识别

    今天做了一个图片验证码识别,一共7行代码,你没看错,我也没说错,算上空行一共7行 下面就是见证奇迹的时刻 from PIL import Image from pytesseract import * ...

  8. 二维坐标系,求解一个点旋转到另外一个点的映射矩阵

    下面这篇博客解释的很清楚:求在平面直角坐标系中,一个点绕坐标原点旋转一定角度后点的坐标_IT集装箱的博客-CSDN博客_点坐标旋转一定角度后的坐标

  9. 在同一个二维坐标系绘制出一元二次曲线, sin正弦、cos余弦曲线 (numpy,matplotlib.pyplot )

    一元二次曲线, sin正弦.cos余弦曲线 (numpy,matplotlib.pyplot ) import numpy import matplotlib.pyplot as plt#范围0~2π ...

最新文章

  1. 【观点】互联网抑或使人更愚蠢
  2. XShell中浏览文件时上拉下拉
  3. Oracle 11g Java驱动包ojdbc6.jar安装到maven库,并查看jar具体版本号
  4. echart 地图 某个地区_一站式解决echarts实现区域地图
  5. WorldCat Search : PHP OCLC Web Services Library
  6. 【题解】跳房子-C++
  7. Conda activate报错 CommandNotFoundError: Your shell has not been properly configured to use ‘conda
  8. 1. Zend_Acl
  9. 学习笔记-----usart串口调试助手一直打印00的解决方案
  10. AE插件/Trapcode Suite安装错误/error
  11. html input属性都有啥,input 属性有哪些input标签常用属性
  12. 链表实现直接选择排序
  13. 蚂蚁金服实习三面,offer已拿。我总结了所有面试题,其实也不过如此!!
  14. 防摸鱼小软件——鼠标键盘检测器
  15. 【九度OJ】查找第K小数
  16. LC滤波器的截止频率公式
  17. 使用QGIS配准栅格地图
  18. 什么?你还不知道如何查值得一读的文献吗?学习一下文献分析神器 bibliometrix 和 HistCite 吧
  19. 【智能制造】汽车智能制造技术应用及智能工厂案例
  20. FAT16和FAT32文件定位

热门文章

  1. 什么是管道?(详解进程间是如何通过管道通信的)
  2. 全球及中国手持式射频识别阅读器行业研究及十四五规划分析报告
  3. Shell 编程 Shell Script
  4. vDSO - Virtual Dynamic Shared Object
  5. 通俗理解 mysql 的mvcc机制
  6. 【Mac】Mac与PlayCover、Mac关闭sip
  7. 关于word标题样式——字体设置,应用后无效的问题
  8. 如何将写好的html代码移植到小程序
  9. 电信c语言笔试,中国电信测评类笔试题
  10. 国内软考有用到JAVA的吗_软考一般有几个科目?含金量如何?