Private Sub AutoSet(angle As Integer, radius As Double)
Dim degrees As Integer = angle * (Math.PI / 180)
'Radius is also the strength of the shot * 4, due to the aiming circle being ~400 pixels
Dim setX As Double = (radius * 4) * (Math.Cos(angle))
Dim setY As Double = (radius * 4) * (Math.Cos(angle))
'Dim setY As Double = (radius * 4) * (Math.Sin(angle))
'Center Tank
Dim tankX As Double = tankIcon.Location.X '- 10
Dim tankY As Double = tankIcon.Location.Y '- 5
Dim ClickX As Integer = tankX + setX
Dim ClickY As Integer = tankY - setY
Graphics.FromImage(mainImageFrame.Image).FillRectangle(Brushes.Blue, ClickX, ClickY, 10, 10)
mainImageFrame.Refresh()
MetroLabel3.Text = setX
MetroLabel4.Text = setY
End Sub
Private Sub MetroButton1_Click(sender As Object, e As EventArgs) Handles MetroButton1.Click
AutoSet(angleTrackbar.Value, powerTrackbar.Value)
End Sub
由于我不允许实际发布截屏,以下是实际代码截图的链接:http://i.imgur.com/AfRrup5.png
假设:
powerTrackbar.Value = 56
angleTrackbar.Value = 75
我尝试做的问题是获取从此页面上的applet看到的X和Y值:http://www.mathopenref.com/coordparamcircle.html。
使用上面的代码并将MetroLabel3 / 4输出与WolframAlpha进行比较,使用相同的公式,但手动切换数字的变量:(56*4) * (cos(75))
我在我的代码中尝试了多种版本的RadianToDegree,反之亦然,但无济于事。
我能够与WolframAlpha匹配的唯一一件事就是当我使用它的#34; Radian"功能与正常程度相比。我无法发布更多屏幕截图,因为我没有足够高的声誉,所以我猜你不得不接受我的话来使用它的功能。虽然要手动启用,只需将&a=TrigRD_R
附加到弧度,或将&a=TrigRD_D
附加到结果页面上WolframAlpha URL的末尾。
根据WolframAlpha上的Degree模式,我的函数的预期结果(我假设)是〜57.97
。此当前代码的实际输出为〜206.47..
我无法弄清楚VB.Net无法在WolframAlpha能够输出正确数字的原因
答案 0 :(得分:1)
您应该使用此公式将函数参数(以度为单位)转换为Sin / Cos
所需的弧度Dim RadiansAngle As Double = DegreesAngle * (Math.PI / 180)
56 * 4 * Cos(75) = 224 * Cos(1.3 radians) = 224 * 0.26 ~ 58