Make the damn thing work without voodoo.
Signed-off-by: Abdulkadir Furkan Şanlı <me@abdulocra.cy>
This commit is contained in:
parent
d48f4a30ff
commit
083a865af9
@ -1,3 +1,5 @@
|
|||||||
# pragmanauts
|
# pragmanauts
|
||||||
|
|
||||||
randonauting that might work for you
|
randonauting that might work for you
|
||||||
|
|
||||||
|
Code is stolen [from this guy](https://github.com/deckerEnigmatic)
|
||||||
|
129
naut.py
Normal file
129
naut.py
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user