什么是“正确”的算法从一个WPF线计算度角?
Answer 1:
你需要atan2
。 然而,这将让你在弧度的角度,:-)的角度计算公式转换为度必须易于atan2(y2 - y1, x2 - x1)
其中(x1, y1)
和(x2, y2)
是你的行结束。
需要注意的是常量pi
是可用的 ,太。
Answer 2:
要转换为度,你可以使用乘法器(180度/ Math.PI弧度)。 这个转换因子通过注意Math.PI弧度相当于180度得到的。 因此,如果theta1是弧度然后theta2 = theta1 *(180 / Math.PI)将等同于不同之处在于它将具有的度单元theta1。
要计算线的角度,你会使用标准的公式切线从三角,然后取双方的反正拿到THETA
黄褐色(THETA)=相反/相邻 - > THETA =反正切(对面/相邻的)
这可以通过形成适当的三角形被应用到您的生产线。 为此,选择就行了(X1,Y1)和(x2,y2)的任意两点。 然后,可以形成与斜边为(X1,Y1)和(X2,Y2)之间的线段的唯一直角三角形的相反侧为长度的竖直线段(Y2 - y1)和相邻的侧为水平长度的线段(X2 - X1)。
您可以通过计算计算的θ值
Double theta = (180/Math.PI) * Math.Atan2(opposite, adjacent);
相邻时是零的功能将自动完成的情况下(这将通过零误差通常会导致除法),并将返回的最适当的角度(90度或-90度)的情况除外当两个相反且相邻为零。 在这种情况下theta是零,这并没有太大的意义。 它真的应该在这种情况下抛出一个异常,因为没有办法数学确定从具有零长度的斜边的三角的角度。
文章来源: Need algorithm for angle of WPF line