我想知道如何计算两条直线在交点处的Angular 。请看下图。这里红线与绿色线相交,我怎么计算这个Angular ?
vwhgwdsa1#
计算两条直线的方向向量并将其归一化:
d := (x2 - x1, y2 - y2) length = sqrt(d.x^2 + d.y^2) d := (d.x / length, d.y / length)
然后,您有多个选项来计算Angular 。一个简单的方法是使用点积:
dot = dRed.x * dGreen.x + dRed.y * dGreen.y angle = arc cos(dot)
如果您还想重建大于180°的Angular (您需要正确的线方向),则需要叉积:
cross = dRed.x * dGreen.y - dRed.y * dGreen.x angle = atan2(cross, dot)
jk9hmnmh2#
对于功能:
交叉角(弧度)为:PI - [arctan(ga)+(PI - arctan(fa)) ]或者如果你有一个交点 P:Arctan(|f(0)- Py|/ Px)+Arctan(|g(0)- Py|/ Px)或者如果你另外有函数的零点(D1和D2)(因此f(D1)= 0和g(D2)= 0):Arctan(|D1 - Px|/ Py)+Arctan(|D2 - Px|/ Py)
它是如何工作的?
f(x) = ax + b
a
将其转换为度:度=(180/PI)* 弧度
8ehkhllq3#
你可以计算两条直线的交点(如果你知道两条直线的方程式)。利用这个交点,你可以在其中一条直线上找到另一点,并得到其中一条直线在另一条直线上的投影。这个投影会给予你两条直线之间的夹角。另外,如果你知道其中一条直线和另一条直线上的点的方程,你仍然可以用这个方法求出两条直线之间的夹角。
3条答案
按热度按时间vwhgwdsa1#
计算两条直线的方向向量并将其归一化:
然后,您有多个选项来计算Angular 。一个简单的方法是使用点积:
如果您还想重建大于180°的Angular (您需要正确的线方向),则需要叉积:
jk9hmnmh2#
对于功能:
交叉角(弧度)为:
PI - [
arctan(ga)+(PI - arctan(fa))
]
或者如果你有一个交点 P:
Arctan(|f(0)- Py|/ Px)+
Arctan(|g(0)- Py|/ Px)
或者如果你另外有函数的零点(D1和D2)(因此f(D1)= 0和g(D2)= 0):
Arctan(|D1 - Px|/ Py)+
Arctan(|D2 - Px|/ Py)
它是如何工作的?
f(x) = ax + b
,a
是直线和X轴之间的Angular 的正切将其转换为度:
度=(180/PI)* 弧度
8ehkhllq3#
你可以计算两条直线的交点(如果你知道两条直线的方程式)。利用这个交点,你可以在其中一条直线上找到另一点,并得到其中一条直线在另一条直线上的投影。这个投影会给予你两条直线之间的夹角。
另外,如果你知道其中一条直线和另一条直线上的点的方程,你仍然可以用这个方法求出两条直线之间的夹角。