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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
python设计模式大全
Jun 27 Python
Python文件读写保存操作的示例代码
Sep 14 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
使用python模拟高斯分布例子
Dec 09 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
Python json转字典字符方法实例解析
Apr 13 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
python 如何停止一个死循环的线程
Nov 24 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
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
Javascript 解疑
2009/11/11 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python中函数默认值使用注意点详解
2016/06/01 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
tensorflow如何批量读取图片
2019/08/29 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
pandas DataFrame运算的实现
2020/06/14 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2014年班干部工作总结
2014/11/25 职场文书
股权转让协议范本
2014/12/07 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
如何写好活动总结
2019/06/21 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript