【问题标题】:Get angle between two 2d lines. (With respect to the direction of the lines)获取两条二维线之间的角度。 (关于线条的方向)
【发布时间】:2015-07-25 20:45:02
【问题描述】:

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

示例图片:

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

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

【问题讨论】:

    标签: math rotation 2d line angle


    【解决方案1】:

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

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

    注意叉积取决于操作数的顺序;假设您的图纸中的顺序,上述内容是有效的。

    【讨论】:

    • 听起来它可以工作,但如果可能的话,单个计算会更优雅。是的,我的线路顺序如图所示。
    • 如果你真的想要一行,你可以做 angle = mod(arccos(-sign(c)*d/ ( ||v1||*||v2|| ) ), 360 ),其中 c = 叉积,d = 点积和 ||.||向量 v1 和 v2 的长度。但我认为 if-else 子句更具可读性。
    • 嗨@Nibor。你能用python展示这个计算的例子吗?对不起,但所有这些计算对我来说都是新的。但我有同样的要求。 ManIkWeet 你做到了吗?你能帮帮我吗?
    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多