Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
' Dim Timer As Timer
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim Panel1, Panel2 As Panel
Dim Butt1 As ImageView
Dim Label As Label
Dim triangle_c As Int
Dim triangle(20000, 12) As Double '012-x0y0z0 345-x1y1z1 678-x2y2z2, 9,10,11 RGB
Dim OpenGL As GLSurfaceView
Dim Seekbar As SeekBar
Dim Touchpanel_data(10) As Double
Dim zoom_distance As Double
Dim ScaleY,ScaleX,ScaleZ As Double
Dim ScaledY,ScaledX,ScaledZ As Double
Dim Imgv As ImageView
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Plot3D")
Activity.Title = "Plot 3D"
Panel1.Visible = True
Seekbar.Value = 50
Panel2.Color = Colors.Transparent ' Make the panel transparent
OpenGL.Initialize2(OpenGL.RENDERMODE_WHEN_DIRTY, "glsv", 16, 0)
Panel2.AddView(OpenGL,0,0,Panel2.Width,Panel2.Height/2)
Imgv.Initialize("")
Panel2.AddView(Imgv,0,Panel2.Height/2,Panel2.Width,Panel2.Height/2)
ScaleTin
' Timer.Initialize("Timer", 100)
' Timer.Enabled = True
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
#Region ******************************************************** Buttons Pressed ****************************************************
Sub Butt1_Click
Activity.Finish
End Sub
#End Region
#Region ******************************************************* Calcs ************************************************************
Sub ScaleTin
Dim Count, i As Int
Dim ScreenDepth As Double = 300dip
Dim Y1,X1,Z1,Y2,X2,Z2,Y3,X3,Z3 As Double
Engine.GetTriangles(2)
Count = CGlobals.MaxTins ' Number of Triangles
ScaleY = Panel1.Width / (CGlobals.YMaxCoord - CGlobals.YMinCoord)
ScaleX = Panel1.Height / (CGlobals.XMaxCoord - CGlobals.XMinCoord)
ScaleZ = ScreenDepth / (CGlobals.ZMaxCont - CGlobals.ZMinCont)
For i = 0 To Count - 1
ScaleCoordinate(CGlobals.Tin3D(i).East,CGlobals.Tin3D(i).North,CGlobals.Tin3D(i).Elev)
Y1=ScaledY
X1=ScaledX
Z1=ScaledZ
ScaleCoordinate(CGlobals.Tin3D(i).East1,CGlobals.Tin3D(i).North1,CGlobals.Tin3D(i).Elev1)
Y2=ScaledY
X2=ScaledX
Z2=ScaledZ
ScaleCoordinate(CGlobals.Tin3D(i).East2,CGlobals.Tin3D(i).North2,CGlobals.Tin3D(i).Elev2)
Y3=ScaledY
X3=ScaledX
Z3=ScaledZ
Add_triangle(Y1,X1,Z1,Y2,X2,Z2,Y3,X3,Z3,0,0,0)
Next
End Sub
Sub ScaleCoordinate(Y As Double, X As Double, z As Double) As List
ScaledY = (Y - CGlobals.YMinCoord) * ScaleY
ScaledX = (X - CGlobals.XMinCoord) * ScaleX
ScaledZ = (Z - CGlobals.ZMinCont) * ScaleZ
Return Array As Double(ScaledX, ScaledY, ScaledZ)
End Sub
Sub Add_triangle(x0 As Double, y0 As Double, z0 As Double, x1 As Double, y1 As Double, z1 As Double, x2 As Double, y2 As Double, z2 As Double, colr As Double, colg As Double, colb As Double)
triangle(triangle_c, 0) = x0
triangle(triangle_c, 1) = y0
triangle(triangle_c, 2) = z0
triangle(triangle_c, 3) = x1
triangle(triangle_c, 4) = y1
triangle(triangle_c, 5) = z1
triangle(triangle_c, 6) = x2
triangle(triangle_c, 7) = y2
triangle(triangle_c, 8) = z2
triangle(triangle_c, 9) = colr
triangle(triangle_c, 10) = colg
triangle(triangle_c, 11) = colb
triangle_c = triangle_c + 1
End Sub
Sub Panel2_Touch (Action As Int, X As Double, Y As Double)
If Action = Panel2.ACTION_MOVE Then
Touchpanel_data(2) = Touchpanel_data(2) + (Touchpanel_data(0) - x) * .15
Touchpanel_data(3) = Touchpanel_data(3) + (Touchpanel_data(1) - y) * .15
End If
Touchpanel_data(0) = X
Touchpanel_data(1) = y
End Sub
Sub opengl_render_tick
OpenGL.RequestRender
Label.Text = "ANG1:" & NumberFormat(Touchpanel_data(2), 1, 1) & " ANG2:" & NumberFormat(Touchpanel_data(3), 1, 1) & " DISTANCE:" & NumberFormat(Abs(zoom_distance), 1, 1)
Label.Invalidate
End Sub
Sub opengl_draw(gl As GL1)
gl.glDisableClientState(gl.GL_VERTEX_ARRAY)
gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY)
gl.glDisableClientState(gl.GL_NORMAL_ARRAY)
gl.glClearColor(.8, .8, .8, 1)
gl.glClear(Bit.Or(gl.GL_COLOR_BUFFER_BIT, gl.GL_DEPTH_BUFFER_BIT))
gl.glEnable(gl.GL_NORMALIZE)
gl.glLoadIdentity
gl.glTranslatef(0, 0, zoom_distance)
gl.glRotatef(-Touchpanel_data(3), 1, 0, 0)
gl.glRotatef(-Touchpanel_data(2), 0, 1, 0)
gl.glFrontFace(gl.GL_CCW)
gl.glEnableClientState(gl.GL_VERTEX_ARRAY)
gl.glEnable(gl.GL_DEPTH_TEST)
gl.glDepthFunc(gl.GL_LEQUAL)
gl.glDepthMask(True)
gl.glDisable(gl.GL_BLEND)
gl.glPushMatrix
Dim vertices(9) As Double
For at = 0 To triangle_c - 1
For t = 0 To 8
vertices(t) = triangle(at, t)
Next
'gl.glVertexPointerf(3, vertices)
gl.glColor4f(triangle(at, 9), triangle(at, 10), triangle(at, 11), 1) ' RGBA
gl.glDrawArrays(gl.GL_TRIANGLES, 0, 3)
Next
gl.glPopMatrix
gl.glDisableClientState(gl.GL_VERTEX_ARRAY)
End Sub
Sub opengl_SurfaceChanged(gl As GL1, width As Int, height As Int)
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.gluPerspective(60, width / height, 0.01, 6)
gl.glMatrixMode(gl.GL_MODELVIEW)
End Sub
Sub SeekBar_ValueChanged (Value As Int, UserChanged As Boolean)
zoom_distance = -(100 - Value) * .05
End Sub