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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
python操作ie登陆土豆网的方法
May 09 Python
Python简单读取json文件功能示例
Nov 30 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
python无序链表删除重复项的方法
Jan 17 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python 去除字符串中指定字符串
Mar 05 Python
Python无头爬虫下载文件的实现
Apr 02 Python
python使用XPath解析数据爬取起点小说网数据
Apr 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
小偷PHP+Html+缓存
2006/12/20 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
学生会个人自荐书范文
2014/02/12 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
教师节活动总结
2014/08/29 职场文书
保密工作承诺书
2014/08/29 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
爱国主义影片观后感
2015/06/18 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python