VERSION 5.00 Begin VB.Form FrmGridExtent Caption = "Output Grid Extent" ClientHeight = 2820 ClientLeft = 60 ClientTop = 345 ClientWidth = 5835 LinkTopic = "Form1" ScaleHeight = 2820 ScaleWidth = 5835 StartUpPosition = 2 'CenterScreen Begin VB.TextBox TxtMaxY Height = 285 Left = 3960 TabIndex = 9 Text = "5426200" Top = 1440 Width = 1215 End Begin VB.TextBox TxtMinY Height = 285 Left = 1440 TabIndex = 8 Text = "5424000" Top = 1440 Width = 1215 End Begin VB.TextBox TxtMaxX Height = 285 Left = 3960 TabIndex = 7 Text = "559400" Top = 960 Width = 1215 End Begin VB.TextBox TxtMinX Height = 285 Left = 1440 TabIndex = 6 Text = "557000" Top = 960 Width = 1215 End Begin VB.CommandButton CmdCalcBB Caption = "Calculate Browninan Bridge Grid" Height = 375 Left = 1440 TabIndex = 1 Top = 2160 Width = 3255 End Begin VB.CommandButton CmdCalcGridExtent Caption = "Auto Calculate Grid Extent" Height = 375 Left = 2040 TabIndex = 0 Top = 360 Width = 2295 End Begin VB.Label Label4 Caption = "Maximum Y" Height = 255 Left = 3000 TabIndex = 5 Top = 1440 Width = 975 End Begin VB.Label Label3 Caption = "Minimum Y" Height = 255 Left = 480 TabIndex = 4 Top = 1440 Width = 975 End Begin VB.Label Label2 Caption = "Maximum X" Height = 255 Left = 3000 TabIndex = 3 Top = 960 Width = 975 End Begin VB.Label Label1 Caption = "Minimum X" Height = 255 Left = 480 TabIndex = 2 Top = 960 Width = 975 End End Attribute VB_Name = "FrmGridExtent" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub CmdCalcGridExtent_Click() Dim CurrentX As Single Dim CurrentY As Single Dim XMax As Single Dim Xmin As Single Dim YMax As Single Dim YMin As Single Dim I As Long XMax = SortedXYArray(0, 0) Xmin = SortedXYArray(0, 0) YMax = SortedXYArray(0, 1) YMin = SortedXYArray(0, 1) For I = 1 To NumOfLocs - 1 If SortedXYArray(I, 0) > XMax Then XMax = SortedXYArray(I, 0) End If If SortedXYArray(I, 0) < Xmin Then Xmin = SortedXYArray(I, 0) End If If SortedXYArray(I, 1) > YMax Then YMax = SortedXYArray(I, 1) End If If SortedXYArray(I, 1) < YMin Then YMin = SortedXYArray(I, 1) End If Next LowerLeftX = Xmin - (XMax - Xmin) / 2 LowerLeftY = YMin - (YMax - YMin) / 2 UpperRightX = XMax + (XMax - Xmin) / 2 UpperRightY = YMax + (YMax - YMin) / 2 TxtMinX.Text = LowerLeftX TxtMaxX.Text = UpperRightX TxtMinY.Text = LowerLeftY TxtMaxY.Text = UpperRightY End Sub Private Sub CmdCalcBB_Click() LowerLeftX = TxtMinX.Text UpperRightX = TxtMaxX.Text LowerLeftY = TxtMinY.Text UpperRightY = TxtMaxY.Text Dim XGridStep As Single Dim YGridStep As Single Dim GridNum As Long XGridStep = (UpperRightX - LowerLeftX) / 249 YGridStep = (UpperRightY - LowerLeftY) / 249 CurrentX = LowerLeftX CurrentY = LowerLeftY Dim StartX As Single Dim StartY As Single Dim EndX As Single Dim EndY As Single Dim StartTime As Double Dim EndTime As Double 'Dim BBVar As Single Dim EntireTime As Single Dim TotalTime As Single Dim TimeT As Single Dim Alpha As Single Dim TimeStep As Single Dim MeanXTimeT As Single Dim MeanYTimeT As Single Dim VarTimeT As Single Dim ProbAtTimeT As Double Dim SqDistance As Single Dim SumProbAcrossTime As Double Dim BBProbDensityAtGridPoint As Double Dim SumBBProbDensityAtGridPoint As Double ReDim BBProbGridArray(100000, 3) As Single 'EntireTime = SortedXYArray(NumOfLocs - 1, 2) - SortedXYArray(0, 2) I = 0 If TelemErrorStdDev = 0 Then TelemErrorStdDev = 0.0001 End If Do Until CurrentX > UpperRightX Do Until CurrentY > UpperRightY 'Calculate Brownian Bridge Probability at grid point SumBBProbDensityAtGridPoint = 0 EntireTime = 0 For LocNum = 0 To NumOfLocs - 2 StartX = SortedXYArray(LocNum, 0) StartY = SortedXYArray(LocNum, 1) StartTime = SortedXYArray(LocNum, 2) EndX = SortedXYArray(LocNum + 1, 0) EndY = SortedXYArray(LocNum + 1, 1) EndTime = SortedXYArray(LocNum + 1, 2) TotalTime = EndTime - StartTime TimeStep = TotalTime / 100 TimeT = 0 SumProbAcrossTime = 0 If TotalTime > TotalTimeTooLong Then Else Do Until TimeT > TotalTime Alpha = TimeT / TotalTime MeanXTimeT = StartX + ((Alpha) * (EndX - StartX)) MeanYTimeT = StartY + ((Alpha) * (EndY - StartY)) VarTimeT = TotalTime * Alpha * (1 - Alpha) * BBVariance + (Alpha ^ 2 + (1 - Alpha) ^ 2) * TelemErrorStdDev ^ 2 SqDistance = (CurrentX - MeanXTimeT) ^ 2 + (CurrentY - MeanYTimeT) ^ 2 ProbAtTimeT = (1 / (2 * Pi * VarTimeT)) * Exp(-0.5 * (SqDistance / VarTimeT)) * TimeStep SumProbAcrossTime = SumProbAcrossTime + ProbAtTimeT TimeT = TimeT + TimeStep Loop EntireTime = EntireTime + TotalTime BBProbDensityAtGridPoint = SumProbAcrossTime SumBBProbDensityAtGridPoint = SumBBProbDensityAtGridPoint + BBProbDensityAtGridPoint If UseAllLocs = False Then LocNum = LocNum + 1 End If End If Next LocNum BBProbGridArray(I, 0) = CurrentX BBProbGridArray(I, 1) = CurrentY If UseAllLocs = False Then BBProbGridArray(I, 2) = (SumBBProbDensityAtGridPoint / (EntireTime)) * (XGridStep * YGridStep) Else BBProbGridArray(I, 2) = (SumBBProbDensityAtGridPoint / (NumOfLocs - 1)) * (XGridStep * YGridStep) BBProbGridArray(I, 2) = (SumBBProbDensityAtGridPoint / (EntireTime)) * (XGridStep * YGridStep) End If I = I + 1 CurrentY = CurrentY + YGridStep GridNum = GridNum + 1 Loop CurrentY = LowerLeftY CurrentX = CurrentX + XGridStep Loop GridDimension = I SaveFileType = "BBGrid" Call Unload(FrmGridExtent) FrmSaveAsBrownBridge.Show End Sub