VB.NET求两点一条直线的角度两条直线的角度

  • A+
所属分类:vb.net

如何计算由两点构成的直线角度,一般测量角度需要两条直线,也就是说求一条直线的角度,必须做参考线,比如默认卡尔迪坐标的X轴或者Y轴作为角度的参考线。

举例 求点A,点B的角度

公式;

X轴=AX-BX    //AX是A点坐标X值,BX是B点坐标X值,

B轴=AY-BY

求三角形的斜边长

斜边长=X轴 / √X轴*X轴+ B轴+B轴

求弧度= Acos(斜边长)   //反函数

角度=180 / (π /  求弧度)
在判断一下点在那个象限即可

用VB.NET 代码写 例子

自定义一个求两点的角度的函数

头部引入Imports System.Math '三角函数


Function angle_radian(ByVal PT1 As Point, ByVal PT2 As Point)
Dim X, Y, H, CO, HD, ALE As Single
'两点的x、y值
X = PT2.X - PT1.X
Y = PT2.Y - PT1.Y
H = Sqrt(Pow(X, 2) + Pow(Y, 2))
'斜边长度
CO = X / H ' 从X轴开始计算角度
HD = Acos(CO)
'求出弧度
ALE = 180 / (PI / HD)
'用弧度转换角度
If Y < 0 Then
ALE = -ALE
ElseIf (Y = 0) Or (X < 0)
ALE = 180
End If
Return ALE
End Function
复制

在调用测试一下


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim point1 As New Point(10, 25) 'X10,Y25
Dim point2 As New Point(55, 50) 'X55 Y50
RichTextBox2.Text = angle_radian(point1, point2)
End Sub
复制

如要求两条直线的夹角,分别先求出两条直线的角度。在两个相减,不就是这两条线段的夹角吗?

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: