65 lines
1.4 KiB
Python
65 lines
1.4 KiB
Python
import heapq
|
|
import sys
|
|
|
|
import numpy as np
|
|
import pylab as PL
|
|
from scipy.spatial.ckdtree import cKDTree
|
|
|
|
exit()
|
|
|
|
|
|
def vec(a, b):
|
|
return b - a
|
|
|
|
|
|
def bfs(points):
|
|
return
|
|
|
|
|
|
def in_ellipse(p, f1, f2, r, offset=0):
|
|
df = ((f1 - f2) ** 2).sum(0) ** 0.5
|
|
d_f1 = ((p - f1) ** 2).sum(1) ** 0.5
|
|
d_f2 = ((p - f2) ** 2).sum(1) ** 0.5
|
|
return (d_f1 + d_f2) < (df * (1 + r))
|
|
|
|
|
|
num_points = 100000
|
|
|
|
p_orig = np.random.normal(0, 10, size=(num_points, 2))
|
|
tree = cKDTree(p_orig)
|
|
f1 = np.array([0, -30])
|
|
f2 = -f1 # np.random.normal(0, 20, (3,))
|
|
# r = 2 ** ((n / cnt) - cnt)
|
|
|
|
mask = in_ellipse(p_orig, f1, f2, 0.1)
|
|
|
|
p = p_orig[mask]
|
|
p_orig = p_orig[~mask]
|
|
|
|
colors = np.random.random(p.shape[0])
|
|
fig = PL.gcf()
|
|
PL.scatter(
|
|
p_orig[:, 0],
|
|
p_orig[:, 1],
|
|
marker=".",
|
|
s=0.2,
|
|
edgecolor="None",
|
|
c=[(0.0, 0.0, 0.0)],
|
|
alpha=0.75,
|
|
rasterized=True,
|
|
)
|
|
PL.scatter(
|
|
p[:, 0], p[:, 1], marker="s", s=0.2, edgecolor="None", c=colors, rasterized=True
|
|
)
|
|
PL.plot(f1[0], f1[1], "r.", label="Source")
|
|
PL.plot(f2[0], f2[1], "g.", label="Destination")
|
|
|
|
max_v = max(p_orig[:, 0].max(), p_orig[:, 1].max(), f1[0], f1[1], f2[0], f2[1]) + 2
|
|
min_v = min(p_orig[:, 0].min(), p_orig[:, 1].min(), f1[0], f1[1], f2[0], f2[1]) - 2
|
|
|
|
|
|
PL.xlim(min_v, max_v)
|
|
PL.ylim(min_v, max_v)
|
|
|
|
PL.legend()
|
|
PL.savefig(sys.argv[1], dpi=1200)
|