找到矢量旋转的最快方法

kri*_*iss 2 python math optimization

我有两个2D矢量,比如u和v,由笛卡尔坐标定义.

想象一下,向量是时钟的针.我正在寻找最快的方法来找出,使用python,如果v是在你之前或之前(或者换句话说,在半平面中找到v是关于你的位置).出于问题的目的,如果向量对齐,则应该在之前回答.

使用一些三角函数似乎很容易,但我相信应该有更快的方法只使用坐标.

我的测试用例:

def after(u, v):
    """code here"""
Run Code Online (Sandbox Code Playgroud)
  • 之后((4,2),(6,1)):是的
  • 之后((4,2),(3,3)):错误
  • 之后((4,2),(2,1)):错误
  • 之后((4,2),(3,-3)):是的
  • 之后((4,2),( - 2,-5)):是的
  • 之后((4,2),( - 4,-2)):错误

Pet*_*ham 13

def after(u, v):
    # return sign of cross product
    return u[0]*v[1]<u[1]*v[0]
Run Code Online (Sandbox Code Playgroud)

不知道它是否快,但它很简洁