VB中三角函数计算的问题。求高手解答。
首先,向量相加的计算是这样的:
我在程序中设置了两个函数,Amplitude()和Angle(),前一个函数用于计算向量相加后的幅值,后一个函数用于计算向量相加后的相角。
但是我发现出现了这样一个问题:
对于以上的情况,高手可以指导一下我要怎么样解决么,我要怎样才能得到正确的结果。
倾尽所有财富值求一个解答~~~~~救救我吧~~~~~>< 展开
Const Pi As Double = 3.1415926
Const rad As Double = 180# / Pi
Private Sub Command1_Click()
Dim rU1 As Double 'U1的摸
Dim rT1 As Double 'U1的角度
Dim rU2 As Double 'U2的模
Dim rT2 As Double 'U2的角度
Dim rU As Double 'U的模
Dim rT As Double 'U的角度
Dim x1 As Double 'U1的实部
Dim y1 As Double 'U1的虚部
Dim x2 As Double 'U2的实部
Dim y2 As Double 'U2的虚部
Dim x As Double 'U的实部
Dim y As Double 'U的虚部
rU1 = CDbl(U1.Text) 'U1的模
rT1 = CDbl(T1.Text) / rad 'U1的角度,输入的是°,换算成弧度
rU2 = CDbl(U2.Text) 'U2的模
rT2 = CDbl(T2.Text) / rad 'U2的角度,输入的是°,换算成弧度
x1 = rU1 * Cos(rT1) 'U1实部
y1 = rU1 * Sin(rT1) 'U1虚部
x2 = rU2 * Cos(rT2) 'U2实部
y2 = rU2 * Sin(rT2) 'U2虚部
x = x1 + x2 'U的实部
y = y1 + y2 'U的虚部
U.Text = CStr(Sqr(x * x + y * y)) 'U的模
If x = 0 Then '如果实部为0,则直接求角度,因为此时不能使用反正切函数
If y = 0 Then '如果虚部也为0,则就假定角度为0,因为复数为0时幅角没有意义
rT = 0
ElseIf y > 0 Then '如果虚部大于0则落在y轴的上半轴
rT = Pi / 2
Else '如果虚部小于0则落在y轴下半轴
rT = 3 * Pi / 2
End If
Else '先不考虑象限计算角度
rT = Atn(y / x)
End If
If x >= 0 Then '如果位于右半平面则直接取反正切的函数
rT = rT * rad
Else '否则位于左半平面则修正180°
rT = (rT + Pi) * rad
End If
T.Text = CStr(rT) '显示转化后的角度
End Sub
Private Sub Form_Load()
U1.Text = "0"
T1.Text = "0"
U2.Text = "0"
T2.Text = "0"
U.Text = "0"
T.Text = "0"
End Sub