二维绕任意点旋转_解析几何|对称,平移和旋转
作者:henu_wxj
链接:https://blog.nowcoder.net/n/803d062c35624a67a0917ed7dd44fa1d
来源:牛客网
对称问题就是计算几何中的经典问题,熟练掌握以及应用对称可以使得问题简化,时间复杂度也可能相对减少。
平移和旋转时解析几何中常用的坐标变换方法。坐标变换可能出现在问题中,也可能出现在解题的过程中。
解题时,通过巧妙的平移旋转,可以简化计算,使题目变得更加直观,方便解题。
例如,对于对称图形,只需要计算研究一半的性质,而另一半可利用对称的性质直接得出。
点的对称
点的对称是几何中的基础问题。
在二维平面上,关于原点对称有一种简单的情况,已知点
若点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轴的对称点为
当直线平行于坐标轴时:直线l1:y=a,l2:x=b;
易得:关于l1对称的点为
现在讨论一般的直线l:ax+by+c=0;设A'(x,y),
那么易得:点
在直线l上。且过A和B的直线与l垂直,即乘积-1。
可得计算公式:
和
那么A'坐标即为:
平移
坐标的平移使解析几何中的基础问题,把点A(x,y)沿向量
边的平移可以看作点的平移,两个点向相同方向平移一段距离:
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)旋转
1.设A点旋转前的角度为
2.求A,B两点的距离:
3.求C,B两点的距离:
4.显然dist1=dist2,设dist1=r,所以:
5.有三角函数两角和公式得:
由此得出:
即旋转后的坐标c,d只与旋转前的坐标x,y和旋转角度
.
查看作者更多博客:https://blog.nowcoder.net/remil
二维绕任意点旋转_解析几何|对称,平移和旋转相关推荐
- 二维绕任意点旋转_二维图形复合线性变换程序设计:三角形绕任意点旋转2wfhbh...
第七讲:二维图形复合线性变换程序设计: 例题:三角形绕任意点旋转. 组合变换为: ( 1 )平移变换 ( 2 )旋转变换 ( 3 )平移变换 #include #include #define PAI ...
- opengl正方形绕点旋转_中考热点:再说旋转动点问题中的最值问题之提分攻略
初中几何三大解题思想:平移.对称.旋转.旋转算是其中最高阶的解题思想,用到压轴的几何题中,难度最大,尤其旋转动点问题中的最值问题更是与众不同,一般题目有一定难度,解题方法灵活多变.从选择到填空.解答的 ...
- 二维张量 乘以 三维张量_通量vs张量流误解
二维张量 乘以 三维张量 TensorFlow is the 800-pound Gorilla of Machine Learning that almost everybody in the fi ...
- java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件
我目前正在开发一个基本的国际象棋程序,该程序允许用户保存当前游戏并稍后再返回并从上次停止的地方接机. 唯一的问题是我不知道如何将2d数组保存到磁盘文件. 我感到更加困惑的是,该代码集需要单独写入每个值 ...
- 扫描二维码读取文档_使用深度学习读取和分类扫描的文档
扫描二维码读取文档 To many people's dismay, there is still a giant wealth of paper documents floating out the ...
- 怎么输出一个二维数组_LeetCode54与59,一个口诀教会你旋转二维数组
Halo, 好久不见各位小伙伴,这几天工作是在是太忙了,忙到都没有足够的时间去继续写算法题目,那么今天一次性带来两道比较类似的题目,在LeetCode中属于中等难度的题目.但其实只要你掌握其中的要点, ...
- numpy二维数组改变某些数_机器学习:Python常用库——Numpy库
从前面的学习中我们知道,机器学习是以大量数据为基础的. 由此就引出一个问题:那么多的数据我们要如何处理呢? 别担心,嘻嘻,Python开发人员早有准备. 为了拓宽数据科学方面的应用,Numpy库应运而 ...
- python二维表转一维表_【习题】一维表转二维表
今天来看看梁总出的练习题哈 转换成下面的二维表效果图(要求:必须要跟效果表一致) 方法1: 小子大神Python: import xlrd import xlwt s = set() d = {} a ...
- vue设置海报二维码任意移动+放大缩小
<template><div class="content" v-if="hasPriv"><!-- 二维码 -->< ...
最新文章
- 在Linux上使用图形界面的GitHub Desktop
- Python 笔试集(1):关于 Python 链式赋值的坑
- java-信息安全(一)-BASE64,MD5,SHA,HMAC,RIPEMD算法
- 采用docker部署3台Redis分布式红锁实例
- python中日志logging模块和异常捕获traceback模块的使用
- 电影天堂电影链接爬取
- MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
- shineblink 雨滴感应传感器
- [Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01_04_Linux操作系统基础
- 撰写商业计划书的一些误区和建议
- 国二c语言和南开100题,全国计算机二级C语言题库_南开100题.doc
- 线性代数之——矩阵乘法和逆矩阵
- C语言基础知识(学习笔记)
- HTTP协议和web服务技术---Apche配置
- 【应用层】“世纪”大案之 我与网络地址的抗争
- matlab求时频分布图,Matlab时频分析TFD程序集(时频分布、chirplet分解、变形分数傅立叶变换)源代码...
- 联想win10触摸板失灵
- python爬虫入门爬取lpl选手价值排行榜
- CSS入门学习笔记(案例+详解)
- 企业技术中心申报条件