作业帮 > 综合 > 作业

已知三点坐标,在vb中怎样计算角度值?求公式代码

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/01 06:44:16
已知三点坐标,在vb中怎样计算角度值?求公式代码
Dim Ax#,Ay#,Bx#,By#,Cx#,Cy#,AB#,BC#,CA#,角A#,角B#,角C#
Ax=1:Ay=0:Bx=0:By=0=0:Cx=1:Cy=1'举例为第一象限45度三角形
AB=Sqr((Ax-Bx)^2+(Ay-By)^2)'二点距离公式
BC=Sqr((Bx-Cx)^2+(By-Cy)^2)
CA=Sqr((Cx-Ax)^2+(Cy-Ay)^2)
角A=ArcCOS((-BC^2+CA^2+AB^2)/(2*AB*CA)) '余弦定理,单位为弧度
角B=ArcCOS((+BC^2-CA^2+AB^2)/(2*BC*AB))
角C=ArcCOS((+BC^2+CA^2-AB^2)/(2*BC*CA))
'总式:只列 角C,应该可以化简一下自请了.角A、角B类似故略去
角C = ArcCos((((Bx - Cx) ^ 2 + (By - Cy) ^ 2) + ((Cx - Ax) ^ 2 + (Cy - Ay) ^ 2) - ((Ax - Bx) ^ 2 + (Ay - By) ^ 2)) / (2 * Sqr((Bx - Cx) ^ 2 + (By - Cy) ^ 2) * Sqr((Cx - Ax) ^ 2 + (Cy - Ay) ^ 2)))
'VB只自带:Atn (反正切) ' ArcCos 自定义反余弦函数
Function ArcCos(X As Doule) As Double
If X = 0 Then
ArcCos=pi/2
Else
ArcCos = Atn(Sqr(1-X*X)/X)
End If
End Function