2016-07-26 7 views
1

私はhypotrochoids(spirograph)を描画するプログラムを作成しようとしています。以下のプログラムはうまくコンパイルされます。しかし、私はそれを実行するときに私は図面の一部を取得します..私は間違って何をやっているのか分からない。私はかなりVBに新しいです。どんな助けもありがとうございます。ありがとう。ここVB.NET spirograph program

スクリーンショットがhttp://imgur.com/a/KxFWk

Public Class Form1 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
End Sub 

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint 

Dim x As Integer 
Dim y As Integer 
Dim p As Integer 
Dim x1 As Integer 
Dim y1 As Integer 
Dim x2 As Integer 
Dim y2 As Integer 

x = 75 
y = 15 
p = 15 

x1 = (x + y) * Math.Cos(0) + p * Math.Cos(0) 
y1 = (x + y) * Math.Sin(0) + p * Math.Sin(0) 
For t = 0 To 500 Step 0.1 
    x2 = (x + y) * Math.Cos(t) + p * Math.Cos((x + y) * t/y) 
    y2 = (x + y) * Math.Sin(t) + p * Math.Sin((x + y) * t/y) 
    e.Graphics.DrawLine(Pens.Blue, x1, y1, x2, y2) 
    x1 = x2 
    y1 = y2 
Next 
End Sub 
End Class 

答えて

0

あるシンおよびCOS計算の結果は、パラメータが、COS 90より大きく、罪のために180よりも大きい負の数をもたらします。

イメージ全体を表示するには、x2とy2のオフセットを変更する必要があります。下記のコードを参照してください。 4行のそれぞれの番号200をピクチャボックスに適した値に変更してください。

x1 = 200 + CInt((x + y) * Math.Cos(0) + p * Math.Cos(0)) 
    y1 = 200 + CInt((x + y) * Math.Sin(0) + p * Math.Sin(0)) 

    For t As Double = 0 To 500 Step 0.1 
     x2 = 200 + CInt((x + y) * Math.Cos(t) + p * Math.Cos((x + y) * t/y)) 
     y2 = 200 + CInt((x + y) * Math.Sin(t) + p * Math.Sin((x + y) * t/y)) 
     e.Graphics.DrawLine(Pens.Blue, x1, y1, x2, y2) 
     x1 = x2 
     y1 = y2 
    Next