diff --git a/README.md b/README.md index b8234a2..332c7e8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # pragmanauts -randonauting that might work for you \ No newline at end of file +randonauting that might work for you + +Code is stolen [from this guy](https://github.com/deckerEnigmatic) diff --git a/naut.py b/naut.py new file mode 100644 index 0000000..68b6e87 --- /dev/null +++ b/naut.py @@ -0,0 +1,129 @@ +# !/usr/bin/python + +from __future__ import division +from math import radians, cos, sin, asin, sqrt +import numpy as np +import subprocess +import sys +import time +import json +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 + +# get a random enough number +def getfloat(): + 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) + + 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) + +# 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) + + +init_start = time.time() +dtime = strftime("%m-%d-%Y %H:%M:%S") +newplot = () + +##### User defined variables ##### + +loghandle = './naut.log' +logfile = open(loghandle, "a") + +#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 +meters_out = 4827 + +##### End User Defined variables ##### + +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) + + 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