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 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
windows下ipython的安装与使用详解
Oct 20 Python
Django中使用celery完成异步任务的示例代码
Jan 23 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Python数据存储之 h5py详解
Dec 26 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
Python验证码截取识别代码实例
May 16 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
python和js交互调用的方法
Jun 23 Python
python绘制分布折线图的示例
Sep 24 Python
Python中lru_cache的使用和实现详解
Jan 25 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
Yii中创建自己的Widget实例
2016/01/05 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
jquery中JSON的解析方式
2015/03/16 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
django实现分页的方法
2015/05/26 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python支持多线程的爬虫实例
2019/12/21 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
python try...finally...的实现方法
2020/11/25 Python
python RSA加密的示例
2020/12/09 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
大专学生求职信
2014/07/04 职场文书
ktv好的活动方案
2014/08/15 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
群众路线领导对照材料
2014/08/23 职场文书
加薪申请报告范本
2015/05/15 职场文书
五一晚会主持词
2015/07/01 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
Django框架之路由用法
2022/06/10 Python