home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 6_2008-2009.ISO / data / zips / Wave_Gener2149494112009.psc / Demo / WG_Demo2.frm < prev    next >
Text File  |  2009-04-11  |  5KB  |  189 lines

  1. VERSION 5.00
  2. Begin VB.Form Lissajou 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "Lissajou Patterns"
  5.    ClientHeight    =   4935
  6.    ClientLeft      =   4770
  7.    ClientTop       =   4245
  8.    ClientWidth     =   3735
  9.    LinkTopic       =   "Form1"
  10.    MaxButton       =   0   'False
  11.    MinButton       =   0   'False
  12.    ScaleHeight     =   4935
  13.    ScaleWidth      =   3735
  14.    Begin VB.OptionButton OPT 
  15.       Caption         =   "Gear"
  16.       Height          =   255
  17.       Index           =   7
  18.       Left            =   2220
  19.       TabIndex        =   8
  20.       Top             =   930
  21.       Width           =   1455
  22.    End
  23.    Begin VB.OptionButton OPT 
  24.       Caption         =   "Flower"
  25.       Height          =   255
  26.       Index           =   6
  27.       Left            =   2220
  28.       TabIndex        =   7
  29.       Top             =   630
  30.       Width           =   1455
  31.    End
  32.    Begin VB.OptionButton OPT 
  33.       Caption         =   "Chain"
  34.       Height          =   255
  35.       Index           =   5
  36.       Left            =   2220
  37.       TabIndex        =   6
  38.       Top             =   330
  39.       Width           =   1455
  40.    End
  41.    Begin VB.OptionButton OPT 
  42.       Caption         =   "Infinity"
  43.       Height          =   255
  44.       Index           =   4
  45.       Left            =   2220
  46.       TabIndex        =   5
  47.       Top             =   30
  48.       Width           =   1455
  49.    End
  50.    Begin VB.OptionButton OPT 
  51.       Caption         =   "Diamond"
  52.       Height          =   255
  53.       Index           =   3
  54.       Left            =   120
  55.       TabIndex        =   4
  56.       Top             =   930
  57.       Width           =   1455
  58.    End
  59.    Begin VB.PictureBox GFX 
  60.       Appearance      =   0  'Flat
  61.       BackColor       =   &H80000005&
  62.       BorderStyle     =   0  'None
  63.       ForeColor       =   &H00FF0000&
  64.       Height          =   3615
  65.       Left            =   60
  66.       ScaleHeight     =   3615
  67.       ScaleWidth      =   3615
  68.       TabIndex        =   3
  69.       Top             =   1260
  70.       Width           =   3615
  71.    End
  72.    Begin VB.OptionButton OPT 
  73.       Caption         =   "Square"
  74.       Height          =   255
  75.       Index           =   2
  76.       Left            =   120
  77.       TabIndex        =   2
  78.       Top             =   630
  79.       Width           =   1455
  80.    End
  81.    Begin VB.OptionButton OPT 
  82.       Caption         =   "Oval"
  83.       Height          =   255
  84.       Index           =   1
  85.       Left            =   120
  86.       TabIndex        =   1
  87.       Top             =   330
  88.       Width           =   1455
  89.    End
  90.    Begin VB.OptionButton OPT 
  91.       Caption         =   "Circle"
  92.       Height          =   255
  93.       Index           =   0
  94.       Left            =   120
  95.       TabIndex        =   0
  96.       Top             =   30
  97.       Width           =   1455
  98.    End
  99. End
  100. Attribute VB_Name = "Lissajou"
  101. Attribute VB_GlobalNameSpace = False
  102. Attribute VB_Creatable = False
  103. Attribute VB_PredeclaredId = True
  104. Attribute VB_Exposed = False
  105. Option Explicit
  106. ' Simple lissajou patterns
  107. Private OSC As HybridOsc
  108.  
  109. Private Sub Form_Load()
  110.   Me.Move (Screen.Width - Me.Width) * 0.5, (Screen.Height - Me.Height) * 0.4
  111. End Sub
  112.  
  113. Private Sub OPT_Click(Index As Integer)
  114.  
  115.   ' Create oscillators
  116.   Set OSC = New HybridOsc
  117.   Set OSC.Amplitude = New SimpleOsc
  118.   Set OSC.Frequency = New SimpleOsc
  119.   Set OSC.Bias = New SimpleOsc
  120.   
  121.   ' Set initial values
  122.   OSC.Amplitude.Frequency = 1
  123.   OSC.Amplitude.Amplitude = 100
  124.   OSC.Frequency.Frequency = 1
  125.   OSC.Frequency.Amplitude = 100
  126.   OSC.Bias.Bias = 1
  127.   
  128.   Select Case Index
  129.   Case 0 ' Circle
  130.     AddPhase 250
  131.   Case 1 ' Oval
  132.     AddPhase 150
  133.   Case 2 'Square
  134.     OSC.Frequency.Shape = wgSquare
  135.     OSC.Amplitude.Shape = wgSquare
  136.     AddPhase 250
  137.   Case 3 ' Diamond
  138.     OSC.Frequency.Shape = wgTriangular
  139.     OSC.Amplitude.Shape = wgTriangular
  140.     AddPhase 250
  141.   Case 4 ' Infinity
  142.     OSC.Frequency.Frequency = 2
  143.   Case 5 ' Chain
  144.     OSC.Frequency.Frequency = 10
  145.     AddPhase 250
  146.   Case 6 ' Flower
  147.     OSC.Bias.Amplitude = 0.4
  148.     OSC.Bias.Frequency = 20
  149.     OSC.Bias.Bias = 0.6
  150.     AddPhase 250
  151.   Case 7 ' Gear
  152.     OSC.Bias.Amplitude = 0.05
  153.     OSC.Bias.Frequency = 40
  154.     OSC.Bias.Bias = 0.95
  155.     OSC.Bias.Shape = wgSquare
  156.     AddPhase 250
  157.   End Select
  158.   
  159.   DrawWave
  160.   
  161. End Sub
  162.  
  163. Sub DrawWave()
  164. Dim x&
  165.   ' Init image, draw wave
  166.   InitGFX
  167.   For x = 0 To 2000
  168.     GFX.PSet (OSC.Amplitude.Value * OSC.Bias.Value, OSC.Frequency.Value * OSC.Bias.Value)
  169.     OSC.Tick
  170.     GFX.Line -(OSC.Amplitude.Value * OSC.Bias.Value, OSC.Frequency.Value * OSC.Bias.Value)
  171.   Next
  172. End Sub
  173.  
  174. Sub InitGFX()
  175.   ' Erase image, set scale, add 0 ref. lines
  176.   Set GFX.Picture = Nothing
  177.   GFX.Scale (-110, 110)-(110, -110)
  178.   GFX.Line (-110, 0)-(110, 0), &HCCCCCC
  179.   GFX.Line (0, -110)-(0, 110), &HCCCCCC
  180. End Sub
  181.  
  182. Sub AddPhase(Amount As Long)
  183. Dim x&
  184.   ' Advance wave by amount
  185.   For x = 1 To Amount
  186.     OSC.Frequency.Tick
  187.   Next
  188. End Sub
  189.