diff --git a/naut.py b/naut.py index 68b6e87..33be029 100644 --- a/naut.py +++ b/naut.py @@ -11,51 +11,60 @@ from time import strftime import random # haversine function to determine distance between two lat,long points + + def haversine(lat1, lon1, lat2, lon2): - R = 3959.87433 #earth radius in miles - dLat = radians(lat2 - lat1) - dLon = radians(lon2 - lon1) - a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2 - c = 2*asin(sqrt(a)) - return R*c + R = 3959.87433 # earth radius in miles + dLat = radians(lat2 - lat1) + dLon = radians(lon2 - lon1) + a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2 + c = 2*asin(sqrt(a)) + return R*c # get a random enough number + + def getfloat(): - output = random.random() - return output + output = random.random() + return output + def str_time_prop(start, end, format, prop): - #get a time at a proportion of a range of two formatted times - stime = start - etime = end - ptime = stime + prop * (etime - stime) + # get a time at a proportion of a range of two formatted times + stime = start + etime = end + ptime = stime + prop * (etime - stime) - return time.strftime(format, time.localtime(ptime)) + return time.strftime(format, time.localtime(ptime)) # get random time in the future + + def random_date(start, end, prop): - return str_time_prop(start, end, '%m/%d/%Y %I:%M%p', prop) + return str_time_prop(start, end, '%m/%d/%Y %I:%M%p', prop) # function to generate a lat,long coordinate within a range # inspiration from this post: # https://gis.stackexchange.com/questions/25877/generating-random-locations-nearby -def create_random_point(x0,y0,distance): - #approximately 1609 meters in a mile - #5 miles = about 8045 - # 111300 = meters in a degree - # 69 = miles in a degree - r = distance / 111300 - r = r/2 - u = float(getfloat()) - v = float(getfloat()) - w = r * np.sqrt(u) - t = 2 * np.pi * v - x = w * np.cos(t) - x1 = x / np.cos(y0) - y = w * np.sin(t) - print "u="+str(u) - print "v="+str(v) - return (x0+x1, y0+y) + + +def create_random_point(x0, y0, distance): + # approximately 1609 meters in a mile + # 5 miles = about 8045 + # 111300 = meters in a degree + # 69 = miles in a degree + r = distance / 111300 + r = r/2 + u = float(getfloat()) + v = float(getfloat()) + w = r * np.sqrt(u) + t = 2 * np.pi * v + x = w * np.cos(t) + x1 = x / np.cos(y0) + y = w * np.sin(t) + print "u="+str(u) + print "v="+str(v) + return (x0+x1, y0+y) init_start = time.time() @@ -67,13 +76,13 @@ newplot = () loghandle = './naut.log' logfile = open(loghandle, "a") -#home_base (starting point), set to Warsaw center. -latitude1, longitude1 = 52.229832,21.011734 +# home_base (starting point), set to Warsaw center. +latitude1, longitude1 = 52.229832, 21.011734 #window_secs = 10800 window_secs = 1800 -#how far to travel in meters from home base +# how far to travel in meters from home base meters_out = 4827 ##### End User Defined variables ##### @@ -82,48 +91,49 @@ current_time = time.time() window = current_time + window_secs # for loop to get multiple points if desired (for future development - void/attractor calculations) -for i in range(1,2): - timex = float(getfloat()) - x,y = create_random_point(latitude1,longitude1, meters_out) - future_time = random_date(current_time, window, timex) - dest_lat = str(format(x,'.5f')) - dest_long = str(format(y,'.5f')) - orig_lat = str(latitude1) - orig_long = str(longitude1) - newplot = (x,y) - origplot = (latitude1,longitude1) - dist = haversine(origplot[0],origplot[1],newplot[0],newplot[1]) - dist = str(format(dist,'.2f')) - print "Distance between points is ",dist - print "destination: "+dest_lat+" "+dest_long - print "future_time: "+future_time - logfile.write(dtime+" homebase_lat="+orig_lat+" homebase_long="+orig_long+" dest_lat="+dest_lat+" dest_long="+dest_long+" future_time="+future_time+" dist="+dist) +for i in range(1, 2): + timex = float(getfloat()) + x, y = create_random_point(latitude1, longitude1, meters_out) + future_time = random_date(current_time, window, timex) + dest_lat = str(format(x, '.5f')) + dest_long = str(format(y, '.5f')) + orig_lat = str(latitude1) + orig_long = str(longitude1) + newplot = (x, y) + origplot = (latitude1, longitude1) + dist = haversine(origplot[0], origplot[1], newplot[0], newplot[1]) + dist = str(format(dist, '.2f')) + print "Distance between points is ", dist + print "destination: "+dest_lat+" "+dest_long + print "future_time: "+future_time + logfile.write(dtime+" homebase_lat="+orig_lat+" homebase_long="+orig_long+" dest_lat=" + + dest_lat+" dest_long="+dest_long+" future_time="+future_time+" dist="+dist) - msg_breaker = '~' - msg_space = '`' - msg_space2 = '```' - #homage to the Matrix - init1_msg = 'Wake up, Neo...' - init_msg = 'The Matrix has you..' - rabbit_msg1 = 'follow the' - rabbit_msg2 = 'white rabbit...' + msg_breaker = '~' + msg_space = '`' + msg_space2 = '```' + # homage to the Matrix + init1_msg = 'Wake up, Neo...' + init_msg = 'The Matrix has you..' + rabbit_msg1 = 'follow the' + rabbit_msg2 = 'white rabbit...' - logfile.write("\n") - print init1_msg - time.sleep(5) - print msg_breaker - print init_msg - time.sleep(5) - print msg_breaker - print rabbit_msg1 - print msg_breaker - print msg_space2 - print rabbit_msg2 - time.sleep(5) - print msg_breaker - print " "+future_time - print msg_breaker - print " "+dest_lat - print msg_space - print dest_long - print "https://www.google.com/maps/search/?api=1&query="+dest_lat+","+dest_long+" Time: "+future_time + logfile.write("\n") + print init1_msg + time.sleep(5) + print msg_breaker + print init_msg + time.sleep(5) + print msg_breaker + print rabbit_msg1 + print msg_breaker + print msg_space2 + print rabbit_msg2 + time.sleep(5) + print msg_breaker + print " "+future_time + print msg_breaker + print " "+dest_lat + print msg_space + print dest_long + print "https://www.google.com/maps/search/?api=1&query="+dest_lat+","+dest_long+" Time: "+future_time