Skip to content

Instantly share code, notes, and snippets.

@n0kovo
Last active November 13, 2020 14:03
Show Gist options
  • Save n0kovo/dbaa7eb5885abb490ea5a513a1296c88 to your computer and use it in GitHub Desktop.
Save n0kovo/dbaa7eb5885abb490ea5a513a1296c88 to your computer and use it in GitHub Desktop.
Randonautica Quantum Blind Spot Implementation
import random
import math
import matplotlib.pyplot as plt
import quantumrandom
from global_land_mask import globe
import numpy as np
import argparse
import sys
earth_radius = 6371 # km
one_degree = earth_radius * 2 * math.pi / 360 * 1000 # 1° latitude in meters
def getOptions(args=sys.argv[1:]):
parser = argparse.ArgumentParser()
parser.add_argument("--lat", help="Starting point latitude", required=True)
parser.add_argument("--long", help="Starting point longitude", required=True)
parser.add_argument("--rad", type=int, help="Radius in meters", required=True)
options = parser.parse_args(args)
return options
def random_point_in_disk(max_radius):
r = max_radius * quantumrandom.randint(0, 1) ** 0.5
theta = quantumrandom.randint(0, 1) * 2 * math.pi
return r * math.cos(theta), r * math.sin(theta)
def random_location(lon, lat, max_radius):
dx, dy = random_point_in_disk(max_radius)
random_lat = lat + dy / one_degree
random_lon = lon + dx / (one_degree * math.cos(lat * math.pi / 180))
return random_lon, random_lat
def link_from_coords(latlong):
lat, long = latlong
return f"https://www.google.com/maps/place/{lat}+{long}"
options = getOptions(sys.argv[1:])
while True:
location = random_location(
float(options.lat), float(options.long), float(options.rad)
)
if globe.is_land(location[0], location[1]):
print(link_from_coords(location))
break
else:
print("Got coordinates in water. Retrying.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment