Python 找到向量旋转的最快方法

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)、

我有两个二维向量,比如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)、(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建议的方法。谢谢。这正是我要找的。