获取两条 2d 线之间的角度。 (相对于线条的方向)

Get angle between two 2d lines. (With respect to the direction of the lines)

我想获得两条线之间相对于线方向的角度。直线的 2 个向量的正常点积总是 returns 两条直线之间的最小角度,这不是我要找的。

示例图片:

蓝线:我有的线
红线:方向指示
绿线:尝试指示我想要的旋转方向的曲线失败。
p0~p3: 直线各点的x,y坐标。
a: 我想要得到的角度。

我想构建一个能给我正确旋转的函数,使用您喜欢的任何编程语言。

也许对此有更优雅的解决方案,但以下工作:

计算两个向量的dot product and the cross product。 如果叉积为负,则使用点积计算内角(称为 "alpha"),否则如果叉积为正,则将外角计算为 360°-alpha。

注意叉积取决于操作数的顺序;假定顺序与您的绘图相同,以上内容有效。