作者:henu_wxj

链接:https://blog.nowcoder.net/n/803d062c35624a67a0917ed7dd44fa1d

来源:牛客网

对称问题就是计算几何中的经典问题,熟练掌握以及应用对称可以使得问题简化,时间复杂度也可能相对减少。

平移和旋转时解析几何中常用的坐标变换方法。坐标变换可能出现在问题中,也可能出现在解题的过程中。

解题时,通过巧妙的平移旋转,可以简化计算,使题目变得更加直观,方便解题。

例如,对于对称图形,只需要计算研究一半的性质,而另一半可利用对称的性质直接得出。

点的对称

点的对称是几何中的基础问题。

在二维平面上,关于原点对称有一种简单的情况,已知点

,&&A,B关于原点对称,那么很容易得出:

若点A,B关于点C对称,已知A,B,求点C的坐标。那么

Code:

Point SymmetricCoordinates(Point p1,Point p2){Point p3;p3.x=2.0*p2.x-p1.x;p3.y=2.0*p2.y-p1.y;return p3;
}

点关于直线的对称

求点关于直线的对称点,相当于求点关于直线上特定一点的对称点,即关于垂足的对称点。

首先讨论一种特例:点

关于坐标轴的对称点。

易得:关于x轴的对称点为

;关于y轴的对称点为

当直线平行于坐标轴时:直线l1:y=a,l2:x=b;

易得:关于l1对称的点为

现在讨论一般的直线l:ax+by+c=0;设A'(x,y),

那么易得:点

在直线l上。且过A和B的直线与l垂直,即乘积-1。

可得计算公式:

那么A'坐标即为:

平移

坐标的平移使解析几何中的基础问题,把点A(x,y)沿向量

平移只需把点A的横坐标分别加上向量a的坐标即可。

边的平移可以看作点的平移,两个点向相同方向平移一段距离:

Code:

int Move(double mid){//默认向左平移mid距离for(int i=1;i<=n;++i){Edge2[i].start=Point(Edge[i].start.x+cos(Edge[i].ang+PI/2.0)*mid,Edge[i].start.y+sin(Edge[i].ang+PI/2.0)*mid);Edge2[i].end=Point(Edge[i].end.x+cos(Edge[i].ang+PI/2.0)*mid,Edge[i].end.y+sin(Edge[i].ang+PI/2.0)*mid);}
}

点延向量平移同时可以看作是坐标系延相反的方向平移,这样就可以得到简单图形的坐标平移,即左加右减。

旋转

旋转在几何和线性代数中是描述刚体围绕一个固定点的运动在平面||空间中的变换。

旋转不同于没有固定点的平移和翻转变换。旋转保留任意两点之间的距离在变幻前后不变。

首先给出点坐标的旋转公式:

其中,x,y表示物体相对旋转点旋转到

角度之前的坐标;
表示物体旋转
角后相对于旋转点的坐标。

具有下面几条关系:设A(x,y)绕B(a,b)旋转

度后的位置为C(c,d)。

1.设A点旋转前的角度为

,则旋转(逆时针)到C点后角度为

2.求A,B两点的距离:

3.求C,B两点的距离:

4.显然dist1=dist2,设dist1=r,所以:

5.有三角函数两角和公式得:

由此得出:

即旋转后的坐标c,d只与旋转前的坐标x,y和旋转角度

有关。如图:

.

查看作者更多博客:https://blog.nowcoder.net/remil

二维绕任意点旋转_解析几何|对称,平移和旋转相关推荐

  1. 二维绕任意点旋转_二维图形复合线性变换程序设计:三角形绕任意点旋转2wfhbh...

    第七讲:二维图形复合线性变换程序设计: 例题:三角形绕任意点旋转. 组合变换为: ( 1 )平移变换 ( 2 )旋转变换 ( 3 )平移变换 #include #include #define PAI ...

  2. opengl正方形绕点旋转_中考热点:再说旋转动点问题中的最值问题之提分攻略

    初中几何三大解题思想:平移.对称.旋转.旋转算是其中最高阶的解题思想,用到压轴的几何题中,难度最大,尤其旋转动点问题中的最值问题更是与众不同,一般题目有一定难度,解题方法灵活多变.从选择到填空.解答的 ...

  3. 二维张量 乘以 三维张量_通量vs张量流误解

    二维张量 乘以 三维张量 TensorFlow is the 800-pound Gorilla of Machine Learning that almost everybody in the fi ...

  4. java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件

    我目前正在开发一个基本的国际象棋程序,该程序允许用户保存当前游戏并稍后再返回并从上次停止的地方接机. 唯一的问题是我不知道如何将2d数组保存到磁盘文件. 我感到更加困惑的是,该代码集需要单独写入每个值 ...

  5. 扫描二维码读取文档_使用深度学习读取和分类扫描的文档

    扫描二维码读取文档 To many people's dismay, there is still a giant wealth of paper documents floating out the ...

  6. 怎么输出一个二维数组_LeetCode54与59,一个口诀教会你旋转二维数组

    Halo, 好久不见各位小伙伴,这几天工作是在是太忙了,忙到都没有足够的时间去继续写算法题目,那么今天一次性带来两道比较类似的题目,在LeetCode中属于中等难度的题目.但其实只要你掌握其中的要点, ...

  7. numpy二维数组改变某些数_机器学习:Python常用库——Numpy库

    从前面的学习中我们知道,机器学习是以大量数据为基础的. 由此就引出一个问题:那么多的数据我们要如何处理呢? 别担心,嘻嘻,Python开发人员早有准备. 为了拓宽数据科学方面的应用,Numpy库应运而 ...

  8. python二维表转一维表_【习题】一维表转二维表

    今天来看看梁总出的练习题哈 转换成下面的二维表效果图(要求:必须要跟效果表一致) 方法1: 小子大神Python: import xlrd import xlwt s = set() d = {} a ...

  9. vue设置海报二维码任意移动+放大缩小

    <template><div class="content" v-if="hasPriv"><!-- 二维码 -->< ...

最新文章

  1. 在Linux上使用图形界面的GitHub Desktop
  2. Python 笔试集(1):关于 Python 链式赋值的坑
  3. java-信息安全(一)-BASE64,MD5,SHA,HMAC,RIPEMD算法
  4. 采用docker部署3台Redis分布式红锁实例
  5. python中日志logging模块和异常捕获traceback模块的使用
  6. 电影天堂电影链接爬取
  7. MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
  8. shineblink 雨滴感应传感器
  9. [Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01_04_Linux操作系统基础
  10. 撰写商业计划书的一些误区和建议
  11. 国二c语言和南开100题,全国计算机二级C语言题库_南开100题.doc
  12. 线性代数之——矩阵乘法和逆矩阵
  13. C语言基础知识(学习笔记)
  14. HTTP协议和web服务技术---Apche配置
  15. 【应用层】“世纪”大案之 我与网络地址的抗争
  16. matlab求时频分布图,Matlab时频分析TFD程序集(时频分布、chirplet分解、变形分数傅立叶变换)源代码...
  17. 联想win10触摸板失灵
  18. python爬虫入门爬取lpl选手价值排行榜
  19. CSS入门学习笔记(案例+详解)
  20. 企业技术中心申报条件

热门文章

  1. [导入]mootools框架【三】-Array篇: 方法完全解析
  2. C# via CLR之IL中间语言初步探索
  3. 鼠标右键快速连接wifi
  4. Shell 监控文件变化
  5. 1 MySQL 主从同步
  6. CSS webkit
  7. 2011年1月28日早会资料(最终版本)
  8. Eclipse中,Open Type(Ctrl+Shift+T)失效后做法。
  9. 【Hive】性能调优 - EXPLAIN
  10. 【SQL】SELECT 语句