已知矩形四个顶点的坐标,矩形旋转一定角度后,求矩形的四个顶点的新坐标?

OneCoderr 2017-09-14 11:40:20
已知矩形四个顶点的坐标,矩形旋转一定角度后,求矩形的四个顶点的新坐标? 为了计算简单,此处暂定是以矩形中心点旋转。

我可以分四个象限计算(顺时针和逆时针可以用角度变化来判断),但还是太麻烦了,请教大神有没简单的方法?

不要说教,只要方法,最好有实例。
...全文
3183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-10-26
  • 打赏
  • 举报
回复
平面直角坐标系中的三角函数的角度都是逆时针计算的
之所以要强调一下,是因为屏幕坐标系的 y轴朝下,对应的角度就是顺时针方向的
OneCoderr 2018-10-26
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式:
x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ;
y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;

公式的推导见 http://jingyan.baidu.com/article/2c8c281dfbf3dd0009252a7b.html


事实上,这个公司顺时针、逆时针都适用。 网上推导出来的顺时针公式仔细分析一下是和这个一致的。
xuzuning 2017-09-14
  • 打赏
  • 举报
回复
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式: x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ; y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ; 公式的推导见 http://jingyan.baidu.com/article/2c8c281dfbf3dd0009252a7b.html
白衣如花 2017-09-14
  • 打赏
  • 举报
回复
突然发现sb了 用和角余弦算x 和角正弦算y就好了嘛。。。。
白衣如花 2017-09-14
  • 打赏
  • 举报
回复
第一个式子错了x2^2 + y2^2 = (L/2)^2 = x1^2 + y1^2
白衣如花 2017-09-14
  • 打赏
  • 举报
回复
不知道你是否记得两向量夹角公式? cos = ab/|a||b| 设对角线长度为L,则以矩形中心点为出发点,顶点为终点的向量长度为 L/2 则有 x2^2 + y2^2 = L/2 = x1^2 + y1^2 cos = (x1 * x2 + y1 * y2) / (L/ 2 * L/2) 解二元二次方程 或者你不用向量夹角公式,用和角余弦公式 cos(a + b) = cos(a)cos(b) - sin(a)sin(b) = x2 / (L/2) // a是一开始的角度,b是旋转的角度 再和长度等式并联,解二元二次方程组
第三章作业 1. (6分)名词解释:扫描转换、增量算法、反走样。 扫描转换:基本图形的光栅化就是在像素点阵中确定最佳逼近与理想图形的像素点集, 并用指定颜色显示这些像素点集的过程。当光栅化与按扫描线顺序绘制图形的过程集合 在一起时,也称为扫描转移。 增量算法:在一个迭代算法中,如果每一步X,Y值是用前一步的值加上一个增量来获得 的,那么,这个算法就称为增量算法。 反走样:用于减轻走样的技术称为反走样或者称为抗锯齿。 2. (10分)计算起点坐标为(0,0),终点坐标(12,9)直线的中点Bresenham算法的每一 步坐标值以及中点偏差判别式d的值,填入表3-1中,并用黑色绘制图3- 29中的直线段的扫描转换像素。 图3-29 像素点阵 "x "y "d "x "y "d " "0 "0 "-0.25 "7 "5 "-0.5 " "1 "1 "0 "8 "6 "-0.25 " "2 "1 "-0.75 "9 "6 "0 " "3 "2 "-0.5 "10 "7 "-0.75 " "4 "3 "-0.25 "11 "8 "-0.5 " "5 "3 "0 "12 "9 "-0.25 " "6 "4 "-0.75 " " " " 表3-1 x,y和d的值 第四章作业 1. (10分)名词解释:四邻接点、八邻接点、四连通域、八连通域、种子填充算法。 四邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右这四个像素,称 为四邻接点。 八邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右以及左上、左下 、右上、右下这八个像素,称为八邻接点。 四连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右这 四个邻接点可以遍历区域内部的所有像素,该多边形区域称为四连通域。 八连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右以 及左上、左下、右上、右下这八个邻接点可以遍历区域内部的所有像素,该多边形区域 称为八连通域。 种子填充算法:从区域内任意一个种子像素开始,由内向外将填充色扩散到整个多边形 区域的填充过程。 2. (10分)试写出图4-43所示多边形的边表和扫描线y=4的有效边表。 图4-43 多边形 解:ET表 Y=4时的AET表 3. (10分)图中已知种子O,试根据简单四连通种子填充算法按左、上、右、下入栈的顺 序给出象素点填充的次序。 " " " " " " " " "3 "O "4 "5 " " " "2 "1 " "6 " " " " " " " " " 第五章作业 1. (10分)名词解释:坐标变换、WCS、UCS、窗口、视区、窗视变换、裁剪、 坐标变更:是坐标系发生变换,但物体位置不发生改变,然后在坐标系下表示所有物 体上的顶点。 WCS:(word coordinate system)世界坐标系,描述现实世界中场景的固定坐标系。 UCS:(user coordinate system)用户坐标系,描述物体几何模型的坐标系。有时也称为局域坐标系(local coordinate system,LCS)。用户坐标系也是实数域坐标系、 窗口:在观察坐标系中定义的确定显示内容的矩形区域称为窗口。 视区:在屏幕坐标系中定义的输出图形的矩形区域称为视区。 窗视变换:图形输出需要进行窗口到视区的变换,只有在窗口内的图形才能在视区中输 出,并且输出的形状要根据视区的大小进行调整,这称为窗视变换。 裁剪:在二维观察中,需要在观察坐标系下根据窗口大小对世界坐标系中的二维图形进 行裁剪,只将位于窗口内的图形变换到视区输出。 2. (10分)如图5- 51所示,P0(4,1)、P1(7,3)、P2(7,7)、P3(1,4)构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点,变换矩形为: 2. 旋转:图形绕原点(P点)旋转45度,变换矩形为: 3. 反平移:将P点移回原处,变换矩阵为: 变换矩阵为: 变换过程为: 3. (14分)用编码裁剪算法裁剪线段P0(0,2),P1(3,3),裁剪窗口为wxl=1,wxr=6,wy b=1,wyt=5,如图5-54所示。要写出: (1)窗口边界划分的9个区间的编码原则。 (2)线段端点的编码。 (3)裁剪的主要步骤。 (4)裁剪后窗口内直线段的端点坐标。 图5-54 直线段裁剪 解:1)首先对直线段的端点进行编码,即对直线段的任一端点(x,y),根据其坐标所 在的区域,赋予一个四位的二进制码D3D2D1D0 若xwxr,则D1=1,否则D1=0; 若ywyt
本视频以程序员的视角分析和阐述了以下几方面的内容:第一,主要阐述人类的思维活动模式;第二,阐述人工智能如何实现;第三,讲解人工智能的具体实现方法。在阐述这三点主要内容的同时,通过具体示例说明了自然语言在开发人工智能时的重要作用,即自然语言是人类在认知自然时抽象的产物,是思维和自然联系的工具。利用在人工智能开发时,是人工智能和人类的沟通桥梁,时人工智能思维产物被人类认知的桥梁。所以说自然语言是开发人工智能必不可少的工具。人们在认知自然界的时候,获取的所有信息都是抽象后的信息。也就是我们的感官能够接收或感受到的信息。换句话说,就是获取的到信息都只是某个事物的一部分信息。比如眼前的显示器:眼睛看到的只是它的颜色、形状和大小,用手只能感知到它的重量及是否光滑、温度等信息,鼻子只能感知到其散发的味道。而它只有这些信息吗?当然不止,只是其它信息我们无法感知,或者不需要知道而已,因为已知的信息已经足够满足我们对其认知的需要了。加入我们需要移动显示器的时候,我们知道其外壳是塑料的,足够结实,能够保护屏幕就可以了,塑料的具体成分,我们不需要去了解就已经能满足我们认知的需要了。然后我们就可以拿着外壳移动显示器了。换个说法也可以:我们在认知自然界的时候,只是认知了事物的部分特征。这些特征已经基本满足了我们的认知需。而特征就是事物的部分性质的抽象信息。自然语言就是最佳的抽象工具。通过自然语言,我们才能够将事物抽象为一个个的名词;将连续的动作抽象为动词;将描述名词和动词的信息抽象为形容词和副词;为了更加精确的描述事物的多少,产生了数量词来做度量衡;为了更加完美的描述自然界,又衍生出了虚词;为了表示关系,产生了介词;为了表示逻辑,产生了连词。而作为人类描述自然界事物的工具,自然语言也天然是人工智能和人类沟通交流的工具。现在的计算机及相关的软硬件已经十分的丰富。完全具备实现人工智能的条件,市面也流行着很多人工智能的算法,但在我看来这些算法充其量可以作为人工智能的部分外设。如图像识别、深度学习、NLP、机械臂等,可以为人工智能的眼睛、判别工具、手腿等外设。因为这些算法都有以下几个缺点:一、不会自动产生需。除了设定好的目标外,无法识别人类的其它指令,也就无法做出正确的响应;二、方法是事先固化的,除固定的算法外,对于的需无法自动生成的算法。三、对于目标无法自动设定达成标准,也就是说没有办法自动判断自己的动作执行结果是否符合自己的需。四、无法自动生成目标,也就是说没有主动性。当遇到复杂任务时,无法通过分解任务来完成。本文站在程序员的视角,分三章系统的分析了人类的思维方式,并转化为程序逻辑,最终实现使用计算机程序来完成人类的思维过程。第一章主要是讲述的是人类的思维方式;第二章主要讲述的是如何将人类思维中需要的信息进行数据化,以便于存储到电脑中;第三章主要讲述的是程序的逻辑架构和部分实现方法。
第三章作业 1. (6分)名词解释:扫描转换、增量算法、反走样。 扫描转换:基本图形的光栅化就是在像素点阵中确定最佳逼近与理想图形的像素点集, 并用指定颜色显示这些像素点集的过程。当光栅化与按扫描线顺序绘制图形的过程集合 在一起时,也称为扫描转移。 增量算法:在一个迭代算法中,如果每一步R,R值是用前一步的值加上一个增量来获得 的,那么,这个算法就称为增量算法。 反走样:用于减轻走样的技术称为反走样或者称为抗锯齿。 2. (10分)计算起点坐标为(0,0),终点坐标(12,9)直线的中点Bresenham算法的每一 步坐标值以及中点偏差判别式d的值,填入表3-1中,并用黑色绘制图3- 29中的直线段的扫描转换像素。 图3-29像素点阵 "R "R "d "R "R "d " "0 "0 "-0.25 "7 "5 "-0.5 " "1 "1 "0 "8 "6 "-0.25 " "2 "1 "-0.75 "9 "6 "0 " "3 "2 "-0.5 "10 "7 "-0.75 " "4 "3 "-0.25 "11 "8 "-0.5 " "5 "3 "0 "12 "9 "-0.25 " "6 "4 "-0.75 " " " " 表3-1R,R和d的值 第四章作业 1. (10分)名词解释:四邻接点、八邻接点、四连通域、八连通域、种子填充算法。 四邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右这四个像素,称 为四邻接点。 八邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右以及左上、左下 、右上、右下这八个像素,称为八邻接点。 四连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右这 四个邻接点可以遍历区域内部的所有像素,该多边形区域称为四连通域。 八连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右以 及左上、左下、右上、右下这八个邻接点可以遍历区域内部的所有像素,该多边形区域 称为八连通域。 种子填充算法:从区域内任意一个种子像素开始,由内向外将填充色扩散到整个多边形 区域的填充过程。 2. (10分)试写出图4-43所示多边形的边表和扫描线R=4的有效边表。 图4-43多边形 解:ET表 R=4时的AET表 3. (10分)图中已知种子O,试根据简单四连通种子填充算法按左、上、右、下入栈的顺 序给出象素点填充的次序。 " " " " " " " " "3 "O "4 "5 " " " "2 "1 " "6 " " " " " " " " " 第五章作业 1. (10分)名词解释:坐标变换、WCS、UCS、窗口、视区、窗视变换、裁剪、 坐标变更:是坐标系发生变换,但物体位置不发生改变,然后在坐标系下表示所有物 体上的顶点。 WCS:(wordcoordinatesRstem)世界坐标系,描述现实世界中场景的固定坐标系。 UCS:(usercoordinatesRstem)用户坐标系,描述物体几何模型的坐标系。有时也称为 局域坐标系(localcoordinatesRstem,LCS)。用户坐标系也是实数域坐标系、 窗口:在观察坐标系中定义的确定显示内容的矩形区域称为窗口。 视区:在屏幕坐标系中定义的输出图形的矩形区域称为视区。 窗视变换:图形输出需要进行窗口到视区的变换,只有在窗口内的图形才能在视区中输 出,并且输出的形状要根据视区的大小进行调整,这称为窗视变换。 裁剪:在二维观察中,需要在观察坐标系下根据窗口大小对世界坐标系中的二维图形进 行裁剪,只将位于窗口内的图形变换到视区输出。 2. (10分)如图5- 51所示,P0(4,1)、P1(7,3)、P2(7,7)、P3(1,4)构成的四边形绕Q(5,4)逆时 针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点,变换矩形为: 2. 旋转:图形绕原点(P点)旋转45度,变换矩形为: 3. 反平移:将P点移回原处,变换矩阵为: 变换矩阵为: 变换过程为: 3. (14分)用编码裁剪算法裁剪线段P0(0,2),P1(3,3),裁剪窗口为wRl=1,wRr=6,wR b=1,wRt=5,如图5-54所示。要写出: (1)窗口边界划分的9个区间的编码原则。 (2)线段端点的编码。 (3)裁剪的主要步骤。 (4)裁剪后窗口内直线段的端点坐标。 图5-54直线段裁剪 解:1)首先对直线段的端点进行编码,即对直线段的任一端点(R,R),根据其坐标所 在的区域,赋予一个四位的二进制码D3D2D1D0 若RwRr,则D1=1,否则D1=0; 若RwRt,则D3=1,否则D
第三章作业 1. (6分)名词解释:扫描转换、增量算法、反走样。 扫描转换:基本图形的光栅化就是在像素点阵中确定最佳逼近和理想图形的像素点集, 并用指定颜色显示这些像素点集的过程。当光栅化和按扫描线顺序绘制图形的过程集合 在一起时,也称为扫描转移。 增量算法:在一个迭代算法中,如果每一步X,Y值是用前一步的值加上一个增量来获得 的,那么,这个算法就称为增量算法。 反走样:用于减轻走样的技术称为反走样或者称为抗锯齿。 2. (10分)计算起点坐标为(0,0),终点坐标(12,9)直线的中点算法的每一步坐标值 以及中点偏差判别式d的值,填入表3-1中,并用黑色绘制图3- 29中的直线段的扫描转换像素。 图3-29 像素点阵 "x "y "d "x "y "d " "0 "0 "-0.25 "7 "5 "-0.5 " "1 "1 "0 "8 "6 "-0.25 " "2 "1 "-0.75 "9 "6 "0 " "3 "2 "-0.5 "10 "7 "-0.75 " "4 "3 "-0.25 "11 "8 "-0.5 " "5 "3 "0 "12 "9 "-0.25 " "6 "4 "-0.75 " " " " 表3-1 和d的值 第四章作业 1. (10分)名词解释:四邻接点、八邻接点、四连通域、八连通域、种子填充算法。 四邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右这四个像素,称 为四邻接点。 八邻接点:对于多边形区域内部任意一个种子像素,其上、下、左、右以及左上、左下 、右上、右下这八个像素,称为八邻接点。 四连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右这 四个邻接点可以遍历区域内部的所有像素,该多边形区域称为四连通域。 八连通域:对于多边形区域内部任意一个种子子素出发,通过访问其上、下、左、右以 及左上、左下、右上、右下这八个邻接点可以遍历区域内部的所有像素,该多边形区域 称为八连通域。 种子填充算法:从区域内任意一个种子像素开始,由内向外将填充色扩散到整个多边形 区域的填充过程。 2. (10分)试写出图4-43所示多边形的边表和扫描线y=4的有效边表。 图4-43 多边形 解:表 4时的表 3. (10分)图中已知种子O,试根据简单四连通种子填充算法按左、上、右、下入栈的顺 序给出象素点填充的次序。 " " " " " " " " "3 "O "4 "5 " " " "2 "1 " "6 " " " " " " " " " 第五章作业 1. (10分)名词解释:坐标变换、、、窗口、视区、窗视变换、裁剪、 坐标变更:是坐标系发生变换,但物体位置不发生改变,然后在坐标系下表示所有物 体上的顶点。 :( )世界坐标系,描述现实世界中场景的固定坐标系。 :( )用户坐标系,描述物体几何模型的坐标系。有时也称为局域坐标系( ,)。用户坐标系也是实数域坐标系、 窗口:在观察坐标系中定义的确定显示内容的矩形区域称为窗口。 视区:在屏幕坐标系中定义的输出图形的矩形区域称为视区。 窗视变换:图形输出需要进行窗口到视区的变换,只有在窗口内的图形才能在视区中输 出,并且输出的形状要根据视区的大小进行调整,这称为窗视变换。 裁剪:在二维观察中,需要在观察坐标系下根据窗口大小对世界坐标系中的二维图形进 行裁剪,只将位于窗口内的图形变换到视区输出。 2. (10分)如图5- 51所示,P0(4,1)、P1(7,3)、P2(7,7)、P3(1,4)构成的四边形绕 Q(5,4)逆时针旋转45°的变换矩阵和变换后图形的顶点坐标。 图5-51 四边形旋转 解:变换的过程包括: 1. 平移:将P点平移至原点,变换矩形为: 2. 旋转:图形绕原点(P点)旋转45度,变换矩形为: 3. 反平移:将P点移回原处,变换矩阵为: 变换矩阵为: 变换过程为: 3. (14分)用编码裁剪算法裁剪线段P0(0,2),P1(3,3),裁剪窗口为1,6,1,5,如图5 -54所示。要写出: (1)窗口边界划分的9个区间的编码原则。 (2)线段端点的编码。 (3)裁剪的主要步骤。 (4)裁剪后窗口内直线段的端点坐标。 图5-54 直线段裁剪 解:1)首先对直线段的端点进行编码,即对直线段的任一端点(x,y),根据其坐标所 在的区域,赋予一个四位的二进制码D3D2D1D0 若x<,则D0=1,否则D0=0; 若x>,则D1=1,否则D1=0; 若y<,则D2=1,否则D2=0; 若y>,则D3=1,否则D3=0. 2)线段端点的编码:1=0001 2=0000 3)裁剪的主要步骤: (1)输入直线的两端点坐标:P0(0,2),P1(3,3),以及窗口的四边界坐标:1,6, 1,5 (2)对p0,p1进行编码:点p0的编码为1=000

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧