Python 找到向量旋转的最快方法
我有两个二维向量,比如u和v,由笛卡尔坐标定义 假设向量是时钟的指针。我正在寻找最快的方法,使用python,找出v在u之后还是在u之前(或者换句话说,就u的位置而言,找出半平面中的v)。对于问题的目的,如果向量对齐,答案应该在前面 使用一些三角学似乎很容易,但我相信应该有一种只使用坐标的更快方法 我的测试用例:Python 找到向量旋转的最快方法,python,optimization,math,Python,Optimization,Math,我有两个二维向量,比如u和v,由笛卡尔坐标定义 假设向量是时钟的指针。我正在寻找最快的方法,使用python,找出v在u之后还是在u之前(或者换句话说,就u的位置而言,找出半平面中的v)。对于问题的目的,如果向量对齐,答案应该在前面 使用一些三角学似乎很容易,但我相信应该有一种只使用坐标的更快方法 我的测试用例: def after(u, v): """code here""" 在((4,2)、(6,1))之后:True 在((4,2)、(3,3))之后:False 在((4,2)、
def after(u, v):
"""code here"""
- 在((4,2)、(6,1))之后:True
- 在((4,2)、(3,3))之后:False
- 在((4,2)、(2,1))之后:False
- 在((4,2)、(3,-3))之后:True
- 在((4,2),(-2,-5))之后:True
- 在((4,2),(-4,-2))之后:False
def在(u,v)之后:
#叉积返回符号
返回u[0]*v[1]总体思路:旋转x轴使其与v重合,并检查u的新y坐标是否为正 那么你想知道代表向量u的线的哪一边,向量v的头部的点在哪一边?我点击谷歌(查询:行边的点
)寻找算法;找到一吨,(阅读第二篇文章)不使用三角法。如果你要旋转,你可以用简单的三角法来计算旋转
还记得高中三角课的三条规则吗?“SOH-CAH-TOA”有什么动静吗?这就是他们的意思:
给定直角三角形:
A *
| \
| \
| \
B *----* C
SOH:
任意角度的正弦,由∆ABC等于对边长度除以斜边长度。例如,为了找到在点C处形成的角度:
__
AB
SIN(∠BCA) = ----
__
AC
__
BC
COS(∠BCA) = ----
__
AC
__
AB
TAN(∠BCA) = ----
__
BC
CAH:
任意角度的余弦,由∆ABC等于相邻边(不是斜边)的长度除以斜边的长度。例如,要找到在点C处形成的角度:
__
AB
SIN(∠BCA) = ----
__
AC
__
BC
COS(∠BCA) = ----
__
AC
__
AB
TAN(∠BCA) = ----
__
BC
TOA:
任意角度的切线,由∆ABC等于对边的长度除以相邻边的长度(不是斜边)。例如,要找到在点C处形成的角度:
__
AB
SIN(∠BCA) = ----
__
AC
__
BC
COS(∠BCA) = ----
__
AC
__
AB
TAN(∠BCA) = ----
__
BC
因此,如果你能确定这些测量值中的任何一个,你就可以确定其余的,只要你想到由坐标和轴组成的直角三角形。如果你用这个链接计算出旋转的数学,你就可以恢复Pete建议的方法。谢谢。这正是我要找的。