VB.NET中圆的参数方程

时间:2015-06-20 00:31:38

标签: vb.net math

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能够输出正确数字的原因

1 个答案:

答案 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