Download or view mithengereverse8.frink in plain text format
/** Reverse-engineering of Dick Koolish's pictures, January 2019. Note that
this program, unlike other programs in the "mithengereverse" series, is
only a *partial* reverse-engineering of MIT's Infinite Corridor's azimuth.
It is used to take EXIF data from a series of pictures, correct their
times based on a photograph of the "true" time, and then provide raw
calculations of the sun's position at the time the pictures were actually
made. To turn this into a corridor azimuth measurement, we need to know
where in the corridor that the camera was positioned and measure distances
from the sun to known references in the corridor.
*/
use sun.frink
use mithengecorridor.frink
// These photos are at:
// http://www.dickkoolish.com/rmk_page/pictures_013119.html
// To fetch relevant pictures:
// curl -o "IMG_#1.jpg" //IMG_[8732-8749].jpg" TARGET="_blank">http://www.dickkoolish.com/rmk_page/RMK_Pictures/SX40-01-31-19//IMG_[8732-8749].jpg
// And dump the EXIF data:
// exiftool -T -filename -createdate . > origdates.txt
// date from phone's EXIF data:
// //IMG_8733.jpg" TARGET="_blank">http://www.dickkoolish.com/rmk_page/RMK_Pictures/SX40-01-31-19//IMG_8733.jpg
camdate1 = # 2019-01-31 16:31:16 US/Eastern #
// "Actual" time taken from the GPS/atomic screen, assuming good time source:
actdate1 = # 2019-01-31 16:32:37 US/Eastern #
// "Actual" Julian day, taken from the screen, assuming good time source:
//actdateJ = JD[2458515.39765 days]
//println["Julian date is $actdateJ"]
// This verfies within less than a second
correction = actdate1 - camdate1
println["Camera correction is $correction. This is the time you have to ADD to the EXIF data to get the correct time."]
// EXIF time from IMG_8737.jpg:
// //IMG_8737.jpg" TARGET="_blank">http://www.dickkoolish.com/rmk_page/RMK_Pictures/SX40-01-31-19//IMG_8737.jpg
// EXIF date format that we don't parse because of dumb colons in date
### yyyy:MM:dd HH:mm:ss ###
outfmt = ### yyyy-MM-dd HH:mm:ss ###
temp = F[18] // From historical record
pressure = 30.2 inHg // From historical record
println["filename\tcorrected time (EST)\tsun altitude\tsun center az.\tsun left az."]
for line = sort[lines["file:/home/eliasen/prog/mithenge/origdates.txt"]]
{
[filename, date] = split["\t", line]
d = parseDate["$date US/Eastern"]
correctedDate = d + correction
print["$filename\t" + (correctedDate -> [outfmt, "US/Eastern"]) + "\t"]
[az, alt] = refractedSunAzimuthAltitude[correctedDate, lat, long, temp, pressure]
az = (az + 180 degrees) mod circle
print[formatFix[alt, "deg", 6] + "\t"]
print[formatFix[az, "deg", 6] + "\t"]
sunRadius = sunRadiusAngle[correctedDate]
// print[formatFix[sunRadius, "deg", 6] + "\t"]
left = az - sunRadius
println[formatFix[left, "deg", 6]]
}
Download or view mithengereverse8.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20143 days, 10 hours, 20 minutes ago.