@JohnHoltz provided an excellent answer above for professional scientists. To an amateur like myself though it's like learning a new language. So I did some research on dual observation coordinates each with different azimuths pointing toward Jupiter at a given point in time. With the help of this excellent website I was able to find the intersecting point of two azimuths from two separate Earth coordinates.
I found that by using the triangulation on the above link that the resulting coordinates were a very-near exact point of Jupiter's zenith on Earth. (I use the word zenith to mean the spot on Earth where Jupiter is currently at 90 degrees directly above at all possible azimuths and in the very center of the night sky.)
Below is the data I used for date and 2 locations
' Data Date: 01-01-1970 00:00:00
' Detroit Lat = 42°19'53.1"N
' Detroit Lon = 83°02'44.7"W
' Detroit Lat = 42.331429
' Detroit Lon = -83.045753
' Detroit Azimuth to Jupiter = 335.578522
' Antarctic Lat = 67°12'50.2"S - Randomly chosen from the other side of earth
' Antarctic Lon = 88°02'30.3"E
' Antarctic Lat = -67.21394
' Antarctic Lon = 88.04174
' Antarctic Azimuth to Jupiter = 26.025038
When I plug the two coordinates into the webpage the resulting coords are:
Intersection point: 11° 08′ 50″ S, 110° 19′ 49″ E
Now you can plug in the intersecting coordinates into Nasa's Jet Propulsion Horizon App to find azimuth and elevation of that location: (First I converted DDMMMSS to decimal coords)
Ephemeris Type: Observer Table
Target Body: Jupiter
Observer Location -> Specify Coordinates
Lon: 110.330277777778 (Converted from 110° 19′ 49″ E)
Lat: -11.1472222222222 (Converted from 11° 08′ 50″ S)
Date Start Time: 1970-01-01
Date Stop Time: 1970-01-02
Step Size3 "1" and Type "hours"
Finally click "Generate Ephemeris"
Results: Azimuth 182.190765, Elevation 89.999201
As you can see the intersection coordinates are nearly 180° Azimuth and 90° elevation, which would be Jupiter's zenith point in my words. At that location Jupiter would be (almost) perfectly centered in the sky. I used the words "night sky" before but that was wrong. That is where Jupiter will be at that particular date and time, regardless if it is night or day at that location.
The website creator provides both mathematical triangulation formulas and also his own JavaScript code for use in web pages. But as an amateur astronomer I'm having some difficulty translating the formula math to Microsoft Office VBA programming scripting language. I will keep chugging along at that. If any VBA programmers out here are more knowledgeable on the math of it all then I would certainly accept any help on that.
In the mean time I did manage to create a set of VBA coordinate conversion functions if anyone is interested in them.
Sub test_DMS_Coordinates_To_Decimal()
Dim myCoordString As String
myCoordString = DMS_Coordinates_To_Decimal(Sheet1.Range("H8").Value)
Debug.Print Sheet1.Range("H8").Value & " = " & myCoordString
End Sub
Function DMS_Coordinates_To_Decimal(dmsCoords As String) As String
'/////////////////////////////////////////////////////////////////////////////////////////////////////
'
' This macro is built to accept any of the following formats of DMS coordinates to convert to decimal
'
' 38° 53' 55" N
' 38°53'55"N
' 38 53 55 N
'
' USAGE: anyStringVariable = DMS_Coordinates_To_Decimal(sheet1.Range("G2").value)
' OR: anyStringVariable = DMS_Coordinates_To_Decimal("38 53 55 N")
' OR: anyStringVariable = DMS_Coordinates_To_Decimal("38° 53' 55" & chr(34) & "N")
'
'
Dim degreesString As String
Dim minutesString As String
Dim secondsString As String
Dim finalProduct1 As String
Dim finalProduct2 As String
Dim finalProduct3 As String
Dim degreesBooleanStart As Boolean
Dim degreesBooleanStop As Boolean
Dim minutesBooleanStart As Boolean
Dim minutesBooleanStop As Boolean
Dim secondsBooleanStart As Boolean
Dim secondsBooleanStop As Boolean
degreesBooleanStop = False
minutesBooleanStop = True
secondsBooleanStop = True
For i = 1 To Len(dmsCoords)
getDegrees:
If Not degreesBooleanStop And IsNumeric(Mid(dmsCoords, i, 1)) Then
degreesBooleanStart = True
degreesString = degreesString & CStr(Mid(dmsCoords, i, 1))
Else
If degreesBooleanStart And Not degreesBooleanStop Then
degreesBooleanStop = True
minutesBooleanStop = False
GoTo getMinutes
End If
End If
getMinutes:
If Not minutesBooleanStop And IsNumeric(Mid(dmsCoords, i, 1)) Then
minutesBooleanStart = True
minutesString = minutesString & CStr(Mid(dmsCoords, i, 1))
Else
If minutesBooleanStart And Not minutesBooleanStop Then
minutesStart = i + 1
minutesBooleanStop = True
secondsBooleanStop = False
GoTo getSeconds
End If
End If
getSeconds:
If Not secondsBooleanStop And IsNumeric(Mid(dmsCoords, i, 1)) Then
secondsBooleanStart = True
secondsString = secondsString & CStr(Mid(dmsCoords, i, 1))
Else
If secondsBooleanStart And Not secondsBooleanStop Then
secondsBooleanStop = True
GoTo do_The_Math
End If
End If
Next i
do_The_Math:
finalProduct1 = degreesString
finalProduct2 = finalProduct & CStr((CDbl(minutesString) / 60) + CDbl(secondsString) / 3600)
finalProduct3 = CStr(CDbl(finalProduct1) + CDbl(finalProduct2))
If InStr(1, UCase(dmsCoords), "S") > 0 Or InStr(1, UCase(dmsCoords), "W") > 0 Then
finalProduct3 = CStr(CDbl(finalProduct3) * -1)
End If
DMS_Coordinates_To_Decimal = finalProduct3
End Function
Sub TEST_convert_Decimal_To_Degrees_Minutes_Seconds()
Debug.Print convert_Decimal_To_Degrees_Minutes_Seconds(-67.21394, -88.04174)
End Sub
Function convert_Decimal_To_Degrees_Minutes_Seconds(ddLat As Double, ddLong As Double) As String
' Dim ddLat As Double
' Dim ddLon As Double
Dim dmsLatDeg As Long
Dim dmsLatMin As Long
Dim dmsLatSec As Double
Dim dmsLatHem As String ' "N" or "S"
Dim dmsLongDeg As Long
Dim dmsLongMin As Long
Dim dmsLongSec As Double
Dim dmsLongHem As String ' "E" or "W"
Dim myLatSplitArr
Dim myLonSplitArr
Dim myLatMinuteRemainderSplitArr
Dim myLonMinuteRemainderSplitArr
Dim myLatSecondRemainderSplitArr
Dim myLonSecondRemainderSplitArr
Dim ddLatMinuteRemainder As Double
Dim ddLonMinuteRemainder As Double
Dim ddLatSecondRemainder As Double
Dim ddLonSecondRemainder As Double
' Is it negative number
If ddLat < 0 Then ' if decimal lat has a negative sign "-"" Set South option "1"
dmsLatHem = "S"
Else
dmsLatHem = "N"
End If
If ddLong < 0 Then
dmsLongHem = "W"
Else
dmsLongHem = "E"
End If
'//////// Degrees
myLatSplitArr = Split(ddLat, ".") ' Split Lat decimal by periiod (.)
dmsLatDeg = myLatSplitArr(0) ' ddLatDeg = part before period
myLonSplitArr = Split(ddLong, ".") ' Split Lon decimal by periiod (.)
dmsLongDeg = myLonSplitArr(0) ' dmsLongDeg = part before period
'/////// Minutes
ddLatMinuteRemainder = CDbl("0." & CStr(myLatSplitArr(1))) * 60
myLatMinuteRemainderSplitArr = Split(ddLatMinuteRemainder, ".")
dmsLatMin = myLatMinuteRemainderSplitArr(0)
ddLonMinuteRemainder = CDbl("0." & CStr(myLonSplitArr(1))) * 60
myLonMinuteRemainderSplitArr = Split(ddLonMinuteRemainder, ".")
dmsLongMin = myLonMinuteRemainderSplitArr(0)
'//////// Seconds
ddLatSecondRemainder = CDbl("0." & CStr(myLatMinuteRemainderSplitArr(1))) * 60
dmsLatSec = Round(ddLatSecondRemainder, 1)
ddLonSecondRemainder = CDbl("0." & CStr(myLonMinuteRemainderSplitArr(1))) * 60
dmsLongSec = Round(ddLonSecondRemainder, 1)
myString = Replace(dmsLatDeg & " " & dmsLatMin & " " & dmsLatSec & " " & dmsLatHem & vbNewLine, "-", "") & _
Replace(dmsLongDeg & " " & dmsLongMin & " " & dmsLongSec & " " & dmsLongHem, "-", "")
connvert_Decimal_To_Degrees_Minutes_Seconds = myString
End Function