python一个点绕另一个点旋转后的坐标
(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
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) + pointxnRotatey = (valuex-pointx)*math.sin(angle) + (valuey-pointy)*math.cos(angle) + pointyreturn 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) + pointxsRotatey = (valuey-pointy)*math.cos(angle) - (valuex-pointx)*math.sin(angle) + pointyreturn 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()
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) + pointxnRotatey = (valuex-pointx)*math.sin(angle) + (valuey-pointy)*math.cos(angle) + pointyreturn 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) + pointxsRotatey = (valuey-pointy)*math.cos(angle) - (valuex-pointx)*math.sin(angle) + pointyreturn sRotatex,sRotateyx1 = 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一个点绕另一个点旋转后的坐标相关推荐
- 图像中某点绕点旋转后的坐标,图像旋转坐标位置
图像中某点绕点旋转后的坐标,图像旋转坐标位置 在平面坐标上,任意点P(x1,y1),绕一个坐标点Q(x2,y2)旋转θ角度后,新的坐标设为(x, y)的计算公式: x= (x1 - x2)*cos(θ ...
- 数学问题-圆上某点沿圆心旋转后的坐标关系式
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 问题说明 近期项目中有涉及到圆相关的公式,其中有一个内容是计算圆上某点沿圆心旋转后的坐标,这个虽 ...
- python旋转坐标系_python实现一个点绕另一个点旋转后的坐标
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 一个点绕另一个点旋转a度 问题
公式如下,(x1,y1)为要转的点,(x2,y2)为中心点,如果是顺时针角度为-, x=(x1-x2)cosθ-(y1-y2)sinθ+x2 y=(y1-y2)cosθ+(x1-x2)sinθ+y2 ...
- 一个点围绕另一个点旋转后的坐标
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)顺时针旋转a角度后的新的坐标设为(x0, y0),有公式: x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) ...
- 求在平面直角坐标系中,一个点绕坐标原点旋转一定角度后点的坐标
如图,在平面直角坐标系中(忽略坐标轴上的刻度值),求坐标点P0(x0, y0)绕坐标原点旋转角度B后得到新的点的坐标P1(x1, y1).这是最基本的坐标点绕坐标原点旋转问题,通过这样的思想我们还可以 ...
- 机器视觉2D点旋转中心标定及旋转后坐标计算
机器视觉2D点旋转中心标定及旋转后的坐标计算 一.旋转中心标定 二.点旋转后的坐标计算 我们在做机器视觉项目时,尤其是与机械臂的视觉应用中,会经常遇到旋转中心,旋转坐标计算等问题.现将本人在机械臂的相 ...
- 图像旋转后显示不完全
下面我们来看看更通常一点的做法:以图像的中心为圆心进行旋转. 这里涉及到一个坐标系的转换问题.看下图: 在矩阵中我们的坐标系通常是AB和AC方向的,而传统的笛卡尔直角坐标系是DE和DF方向的. 令图像 ...
- Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装
Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...
最新文章
- 10-01 Java 类,抽象类,接口的综合小练习--运动员和教练
- oracle存储过程循环单列,Oracle存储过程循环语法实例分析
- 14英寸电脑长宽多少_首款5G折叠屏电脑发布:看完价格,我酸了
- 基于DeepLabV3+与U-Net融合的黄瓜叶片病害严重程度分类方法
- Ubuntu18.04安装markdown工具Typora
- 凸优化第四章凸优化问题 4.5几何规划
- java 反编译 class_反编译class文件并重新编译的方法
- 修改硬盘固件的木马 探索方程式(EQUATION)组织的攻击组件
- 理解频域、时域、FFT和加窗 加深对信号的认识
- i++和++i哪个效率高
- 捷径|皮皮虾去水印教程
- php阴阳万年历转换的接口,PHP编程实现阳历转换为阴历的方法实例
- 如何让浏览器用极速模式打开网站而不是兼容模式
- delta和gamma中性_趣谈希腊字母(Delta和Gamma)
- Matlab中(),[],与{}的用法区别
- 微信最火html5游戏平台,盘点五个热门HTML5游戏微信公众号
- Cache 的地址映像方式(4种)
- 【Python】为图片加上数字上标
- SEO 小白如何实现网站优化?
- window下vmware使用无线网卡nat的方式上网
热门文章
- 我的世界JAVA挂机杀怪有经验_5分钟教你打造mc最简单的刷经验机!挂机就能无限经验?...
- 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
- 软件著作权可以更改名字吗?软著如何更改名字?
- 通过Nginx搭建直播带货平台的直播服务器
- 2020年全球程序员收入出炉,国内程序员的收入也不低!北京以10万美元的薪资排名第十!
- 《安富莱嵌入式周报》第223期:2021.07.26--2021.08.01
- 宏碁传奇Go评测 怎么样
- 机器学习(一):概述
- android 获取视频编码,Android视频编码
- ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证