python实现一个点绕另一个点旋转后的坐标


Posted in Python onDecember 04, 2019

如下所示:

(x,y)为要转的点,(pointx,pointy)为中心点,如果顺时针角度为angle

srx = (x-pointx)*cos(angle) + (y-pointy)*sin(angle)+pointx

sry = (y-pointy)*cos(angle) - (x-pointx)*sin(angle)+pointy

(x,y)为要转的点,(pointx,pointy)为中心点,如果逆时针角度为angle

nrx = (x-pointx)*cos(angle) - (y-pointy)*sin(angle)+pointx

nry = (x-pointx)*sin(angle) + (y-pointy)*cos(angle)+pointy

python实现一个点绕另一个点旋转后的坐标

python实现一个点绕另一个点旋转后的坐标

import numpy as np
import math
import matplotlib.pyplot as plt
# 绕pointx,pointy逆时针旋转
def Nrotate(angle,valuex,valuey,pointx,pointy):
 valuex = np.array(valuex)
 valuey = np.array(valuey)
 nRotatex = (valuex-pointx)*math.cos(angle) - (valuey-pointy)*math.sin(angle) + pointx
 nRotatey = (valuex-pointx)*math.sin(angle) + (valuey-pointy)*math.cos(angle) + pointy
 return nRotatex, nRotatey
# 绕pointx,pointy顺时针旋转
def Srotate(angle,valuex,valuey,pointx,pointy):
 valuex = np.array(valuex)
 valuey = np.array(valuey)
 sRotatex = (valuex-pointx)*math.cos(angle) + (valuey-pointy)*math.sin(angle) + pointx
 sRotatey = (valuey-pointy)*math.cos(angle) - (valuex-pointx)*math.sin(angle) + pointy
 return sRotatex,sRotatey
pointx = 1
pointy = 1
sPointx ,sPointy = Nrotate(math.radians(45),pointx,pointy,0,0)
print(sPointx,sPointy)
plt.plot([0,pointx],[0,pointy])
plt.plot([0,sPointx],[0,sPointy])
plt.xlim(-3.,3.)
plt.ylim(-3.,3.)
plt.xticks(np.arange(-3.,3.,1))
plt.yticks(np.arange(-3.,3.,1))
plt.show()

python实现一个点绕另一个点旋转后的坐标

import numpy as np
import math
import matplotlib.pyplot as plt
# 绕pointx,pointy逆时针旋转
def Nrotate(angle,valuex,valuey,pointx,pointy):
 valuex = np.array(valuex)
 valuey = np.array(valuey)
 nRotatex = (valuex-pointx)*math.cos(angle) - (valuey-pointy)*math.sin(angle) + pointx
 nRotatey = (valuex-pointx)*math.sin(angle) + (valuey-pointy)*math.cos(angle) + pointy
 return nRotatex, nRotatey
# 绕pointx,pointy顺时针旋转
def Srotate(angle,valuex,valuey,pointx,pointy):
 valuex = np.array(valuex)
 valuey = np.array(valuey)
 sRotatex = (valuex-pointx)*math.cos(angle) + (valuey-pointy)*math.sin(angle) + pointx
 sRotatey = (valuey-pointy)*math.cos(angle) - (valuex-pointx)*math.sin(angle) + pointy
 return sRotatex,sRotatey
 
x1 = np.array([1,2,3])
y1 = np.array([1,2,3])
x2 = np.array([3,6])
y2 = np.array([2,1])
# x2往x1上拼
disx = x2[0]-x1[0]
disy = y2[0]-y1[0]
removeX2 = x2-disx
removeY2 = y2-disy
tany1 = y1[-1]-y1[0]
tanx1 = x1[-1]-x1[0]
angle1 = math.degrees(np.arctan(tany1/tanx1))
tany2 = y2[-1]-y2[0]
tanx2 = x2[-1]-x2[0]
angle2 = math.degrees(np.arctan(tany2/tanx2))
disAngle = angle2-angle1
print(angle1)
print(angle2)
print(disAngle)
if disAngle<0:
 rotateX,rotateY = Nrotate(math.radians(abs(disAngle)),removeX2,removeY2,x1[0],y1[0])
else:
 rotateX,rotateY = Srotate(math.radians(abs(disAngle)),removeX2,removeY2,x1[0],y1[0])
plt.plot(x1,y1,color='red')
plt.plot(removeX2,removeY2,color='green')
plt.scatter(rotateX,rotateY,color='yellow')
plt.xlim(0.,10.)
plt.ylim(0.,10.)
plt.xticks(np.arange(0.,10.,1))
plt.yticks(np.arange(0.,10.,1))
plt.show()

python实现一个点绕另一个点旋转后的坐标

以上这篇python实现一个点绕另一个点旋转后的坐标就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分析python服务器拒绝服务攻击代码
Jan 16 Python
python基础教程之序列详解
Aug 29 Python
Python显示进度条的方法
Sep 20 Python
python实现的系统实用log类实例
Jun 30 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
python 从csv读数据到mysql的实例
Jun 21 Python
对Python中内置异常层次结构详解
Oct 18 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
python求最大值最小值方法总结
Jun 25 Python
django fernet fields字段加密实践详解
Aug 12 Python
pygame实现打字游戏
Feb 19 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
Django配置文件代码说明
Dec 04 #Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 #Python
在Django下创建项目以及设置settings.py教程
Dec 03 #Python
Django自带的加密算法及加密模块详解
Dec 03 #Python
python Opencv计算图像相似度过程解析
Dec 03 #Python
django 中使用DateTime常用的时间查询方式
Dec 03 #Python
在django中自定义字段Field详解
Dec 03 #Python
You might like
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
基于vue组件实现猜数字游戏
2020/05/28 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python 实现让字典的value 成为列表
2019/12/16 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
双语教学实施方案
2014/03/23 职场文书
在校实习生求职信
2014/06/18 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫