我有一个从某个点出发的向量,它的Angular ,也有由两个点描述的直线,我需要找到向量和直线的交点,我通过直线方程计算了交点,但是在这个例子中,我找到了与向量方向相反的直线的交点,所以我决定检查直线是否在向量的方向上,但我想不出合适的条件。屏幕截图显示了一个例子,说明当一个Angular 在两个其他Angular 之间时,它意味着什么。目前Angular 是从-180到180,但我会非常感谢Angular 从0到360的解决方案。x1c 0d1x
一系列要检查的动作,无论是数学上的还是代码形式的,都会对我有所帮助。
2条答案
按热度按时间toe950271#
首先把端点的顺序排好,用数字排序;如果差值〈180 °,则完成该步骤,否则将360 °加到较小的一个上并将它们颠倒。
然后看光线是否福尔斯在它们之间,如果它大于第一个点但小于第二个点,那么就有交点;否则将360加到射线上并进行第二次测试。
示例1:线从80到280,射线在350。端点之间的差值为200,大于180,因此更改较小的端点:这条线是从280到440。350处的射线在这两个端点之间,因此射线与这条线相交。
示例2:线从50到140,射线在260。端点之间的差值为90,小于180;不需要调整,光线不在它们之间;将360添加到射线,使其变为620。射线仍然不在端点之间,因此射线不与直线相交。
此解决方案适用于从0到360测量的Angular 。如果给定的Angular 是从-180到180,只需先将180加到所有值上。
e7arh2l62#
这里有一个解决方案,如果你有有限的线。它没有从头开始的算法,因为它使用shapely,但它的工作。另外,因为它的python,应该更快地使用库无论如何。