Example showing surface drawing using GINOSURF

VERSION 5.00
Begin VB.Form MainForm 
   ClientHeight    =   10275
   ClientLeft      =   165
   ClientTop       =   975
   ClientWidth     =   9915
   LinkTopic       =   "Form1"
   PaletteMode     =   1  'UseZOrder
   ScaleHeight     =   10275
   ScaleWidth      =   9915
   Begin VB.OptionButton Option2 
      Caption         =   "Contour Plot"
      Height          =   735
      Left            =   3000
      TabIndex        =   4
      Top             =   840
      Width           =   2295
   End
   Begin VB.OptionButton Option1 
      Caption         =   "Surface"
      Height          =   495
      Left            =   240
      TabIndex        =   3
      Top             =   960
      Width           =   2175
   End
   Begin VB.HScrollBar HScroll1 
      Enabled         =   0   'False
      Height          =   495
      Left            =   4800
      Max             =   30
      Min             =   -30
      TabIndex        =   2
      Top             =   120
      Width           =   4095
   End
   Begin VB.PictureBox Picture1 
      Align           =   2  'Align Bottom
      AutoRedraw      =   -1  'True
      Height          =   8490
      Left            =   0
      ScaleHeight     =   8430
      ScaleWidth      =   9855
      TabIndex        =   1
      Top             =   1785
      Width           =   9915
   End
   Begin VB.CommandButton TestButton1 
      Caption         =   "Draw Plot"
      Height          =   495
      Left            =   0
      TabIndex        =   0
      Top             =   120
      Width           =   1455
   End
End
Attribute VB_Name = "MainForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub Form_Load()
  
  
  Rem Open GINO-F
  gOpenGino
  
  Rem Open The GINO Device
  gMwinao 0, Picture1.hDC
  Option1.value = True
  Option2.value = False
 HScroll1.Enabled = True
End Sub


Private Sub Form_Unload(Cancel As Integer)
  Rem Close GINO Device
  gCloseDevice
  Rem Close GINO
  gCloseGino
  
End Sub


Private Sub HScroll1_Change()
  Dim paper As GDIM, papertype As Long
  Dim work As GWORKSPACE
  Dim az(0 To 20, 0 To 20) As Single
  Dim lm As GLIMIT
  Dim point(0 To 441) As GPOINT3
  Dim idx(0 To 19, 0 To 19) As GFILL
  
  MainForm.MousePointer = 11
  gNewDrawing
  gEnqDrawingLimits paper, papertype
  
  gsOpenSurf
  
  gSetHardChars
  gSetCharSize 2#, 2#
  gSetCharFont 101
  
  gsSetSurfCharMode GGINOMODE
  
  For i = 0 To 19
    For j = 0 To 19
      idx(i, j).fill = GSOLID
      idx(i, j).line = ((i * j) Mod 8) + 2
    Next j
  Next i
  For x = 0 To 20
    For y = 0 To 20
      point(y * 20 + x).x = x
      point(y * 20 + x).y = y
      point(y * 20 + x).z = (x * y)
    Next y
  Next x
  
  lm.xmin = 0#
  lm.xmax = 20#
  lm.ymin = 0#
  lm.ymax = 20#
  
  gSetLineColour GBLUE
  gsGenerateRandomGrid 441, point(0), lm, 21, 21, az(0, 0), work
Rem   gsDrawWireFrameSurface lm, 21, 21, az(0, 0), 150#, 25#, CSng(HScroll1.value), work
  gsFillSurface lm, 21, 21, az(0, 0), 150#, 25#, CSng(HScroll1.value), idx(0, 0), work
  
  gFlushGraphics
  Picture1.Refresh
  gsFreeWorkspace work
  
  gsCloseSurf
  MainForm.MousePointer = 0
End Sub



Private Sub Option1_Click()
HScroll1.Enabled = True
End Sub

Private Sub Option2_Click()
  HScroll1.Enabled = False
End Sub

Private Sub TestButton1_Click()
  Dim paper As GDIM, papertype As Long
  Dim work As GWORKSPACE
  Dim az(0 To 20, 0 To 20) As Single
  Dim lm As GLIMIT
  Dim point(0 To 441) As GPOINT3
  Dim idx(0 To 19, 0 To 19) As GFILL
  Dim i, maxpts As Integer
  
  
  MainForm.MousePointer = 11
  gNewDrawing
  gEnqDrawingLimits paper, papertype
  
  gsOpenSurf
  
  gSetHardChars
  gSetCharSize 2#, 2#
  gSetCharFont 101
  
  gsSetSurfCharMode GGINOMODE
  
  For i = 0 To 19
    For j = 0 To 19
      idx(i, j).fill = GSOLID
      idx(i, j).line = ((i * j) Mod 8) + 2
    Next j
  Next i
  Open "f:\mixedlang\vbasic\surf\gstd1.dat" For Input As #1
  Input #1, maxpts
  For i = 1 To maxpts
      Input #1, point(i).x, point(i).y, point(i).z
  Next i
  Close #1
  
  Rem For x = 0 To 20
  Rem   For y = 0 To 20
  Rem     point(y * 20 + x).x = x
  Rem     point(y * 20 + x).y = y
  Rem     point(y * 20 + x).z = (x * y)
  Rem   Next y
  Rem Next x
  
  lm.xmin = 0#
  lm.xmax = 20#
  lm.ymin = 0#
  lm.ymax = 20#
  
  gSetLineColour GBLUE
Rem  gsGenerateRandomNetwork 800, 401, point(0), work
Rem  gsDrawTriangulatedContourMap lm, 5, GSMOOTH, work
Rem  gSetLineColour GBLUE
Rem  gsDrawNetwork GSYMBOLS, GSPOT, work
  gsGenerateRandomGrid 441, point(0), lm, 21, 21, az(0, 0), work
Rem  gsDrawGriddedContourMap lm, 21, 21, az(0, 0), 4, GSMOOTH, work
If Option2.value = True Then gsFillGriddedContourMap lm, 21, 21, az(0, 0), 4, GSMOOTH, idx(0, 0), GOFF, work
  If Option1.value = True Then gsFillSurface lm, 21, 21, az(0, 0), 150#, 25#, CSng(HScroll1.value), idx(0, 0), work
  
  gFlushGraphics
  Picture1.Refresh
  gsFreeWorkspace work
  
  gsCloseSurf
  MainForm.MousePointer = 0
  
End Sub



Public Function zfunc(ByRef x#, ByRef y#) As Single
  zfunc = (x * y)
  Return
End Function