(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一个点绕另一个点旋转后的坐标相关推荐

  1. 图像中某点绕点旋转后的坐标,图像旋转坐标位置

    图像中某点绕点旋转后的坐标,图像旋转坐标位置 在平面坐标上,任意点P(x1,y1),绕一个坐标点Q(x2,y2)旋转θ角度后,新的坐标设为(x, y)的计算公式: x= (x1 - x2)*cos(θ ...

  2. 数学问题-圆上某点沿圆心旋转后的坐标关系式

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 问题说明 近期项目中有涉及到圆相关的公式,其中有一个内容是计算圆上某点沿圆心旋转后的坐标,这个虽 ...

  3. python旋转坐标系_python实现一个点绕另一个点旋转后的坐标

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. 一个点绕另一个点旋转a度 问题

    公式如下,(x1,y1)为要转的点,(x2,y2)为中心点,如果是顺时针角度为-, x=(x1-x2)cosθ-(y1-y2)sinθ+x2 y=(y1-y2)cosθ+(x1-x2)sinθ+y2 ...

  5. 一个点围绕另一个点旋转后的坐标

    假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)顺时针旋转a角度后的新的坐标设为(x0, y0),有公式: x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) ...

  6. 求在平面直角坐标系中,一个点绕坐标原点旋转一定角度后点的坐标

    如图,在平面直角坐标系中(忽略坐标轴上的刻度值),求坐标点P0(x0, y0)绕坐标原点旋转角度B后得到新的点的坐标P1(x1, y1).这是最基本的坐标点绕坐标原点旋转问题,通过这样的思想我们还可以 ...

  7. 机器视觉2D点旋转中心标定及旋转后坐标计算

    机器视觉2D点旋转中心标定及旋转后的坐标计算 一.旋转中心标定 二.点旋转后的坐标计算 我们在做机器视觉项目时,尤其是与机械臂的视觉应用中,会经常遇到旋转中心,旋转坐标计算等问题.现将本人在机械臂的相 ...

  8. 图像旋转后显示不完全

    下面我们来看看更通常一点的做法:以图像的中心为圆心进行旋转. 这里涉及到一个坐标系的转换问题.看下图: 在矩阵中我们的坐标系通常是AB和AC方向的,而传统的笛卡尔直角坐标系是DE和DF方向的. 令图像 ...

  9. Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...

最新文章

  1. 10-01 Java 类,抽象类,接口的综合小练习--运动员和教练
  2. oracle存储过程循环单列,Oracle存储过程循环语法实例分析
  3. 14英寸电脑长宽多少_首款5G折叠屏电脑发布:看完价格,我酸了
  4. 基于DeepLabV3+与U-Net融合的黄瓜叶片病害严重程度分类方法
  5. Ubuntu18.04安装markdown工具Typora
  6. 凸优化第四章凸优化问题 4.5几何规划
  7. java 反编译 class_反编译class文件并重新编译的方法
  8. 修改硬盘固件的木马 探索方程式(EQUATION)组织的攻击组件
  9. 理解频域、时域、FFT和加窗 加深对信号的认识
  10. i++和++i哪个效率高
  11. 捷径|皮皮虾去水印教程
  12. php阴阳万年历转换的接口,PHP编程实现阳历转换为阴历的方法实例
  13. 如何让浏览器用极速模式打开网站而不是兼容模式
  14. delta和gamma中性_趣谈希腊字母(Delta和Gamma)
  15. Matlab中(),[],与{}的用法区别
  16. 微信最火html5游戏平台,盘点五个热门HTML5游戏微信公众号
  17. Cache 的地址映像方式(4种)
  18. 【Python】为图片加上数字上标
  19. SEO 小白如何实现网站优化?
  20. window下vmware使用无线网卡nat的方式上网

热门文章

  1. 我的世界JAVA挂机杀怪有经验_5分钟教你打造mc最简单的刷经验机!挂机就能无限经验?...
  2. 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
  3. 软件著作权可以更改名字吗?软著如何更改名字?
  4. 通过Nginx搭建直播带货平台的直播服务器
  5. 2020年全球程序员收入出炉,国内程序员的收入也不低!北京以10万美元的薪资排名第十!
  6. 《安富莱嵌入式周报》第223期:2021.07.26--2021.08.01
  7. 宏碁传奇Go评测 怎么样
  8. 机器学习(一):概述
  9. android 获取视频编码,Android视频编码
  10. ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证