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中函数的调用与定义
Mar 14 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
谈谈python中GUI的选择
Mar 01 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
django settings.py 配置文件及介绍
Jul 15 Python
python3实现高效的端口扫描
Aug 31 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Django 返回json数据的实现示例
Mar 05 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
TensorFlow的自动求导原理分析
May 26 Python
Django rest framework如何自定义用户表
Jun 09 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
PHP 数组教程 定义数组
2009/10/23 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python按钮的响应事件详解
2019/03/04 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
电大自我鉴定
2013/10/27 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
商业房地产广告语
2014/03/13 职场文书
微电影大赛策划方案
2014/06/05 职场文书
前台岗位职责
2015/02/13 职场文书
物业保安辞职信
2015/05/12 职场文书
学校证明范文
2015/06/24 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
Python使用永中文档转换服务
2022/05/06 Python
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python