-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtest.py
110 lines (103 loc) · 2.4 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Test file for lsi.
# Author: Sam Lichtenberg
# Email: [email protected]
# Date: 09/02/2013
from lsi import intersection
import random
import time, sys
from helper import *
ev = 0.00000001
def scale(i):
return float(i)
use_file = None
try:
use_file = sys.argv[2]
except:
pass
if not use_file:
S = []
for i in range(int(sys.argv[1])):
p1 = (scale(random.randint(0, 1000)), scale(random.randint(0, 1000)))
p2 = (scale(random.randint(0, 1000)), scale(random.randint(0, 1000)))
s = (p1, p2)
S.append(s)
f = open('input', 'w')
f.write(str(S))
f.close()
else:
f = open(sys.argv[2], 'r')
S = eval(f.read())
intersections = []
seen = []
vs = False
hs = False
es = False
now = time.time()
for seg1 in S:
if approx_equal(seg1[0][0], seg1[1][0], ev):
print 'VERTICAL SEG'
print ''
print ''
vs = True
if approx_equal(seg1[0][1], seg1[1][1], ev):
print 'HORIZONTAL SEG'
print ''
print ''
hs = True
for seg2 in S:
if seg1 is not seg2 and segs_equal(seg1, seg2):
print 'EQUAL SEGS'
print ''
print ''
es = True
if seg1 is not seg2 and (seg2, seg1) not in seen:
i = intersect(seg1, seg2)
if i:
intersections.append((i, [seg1, seg2]))
# xpts = [seg1[0][0], seg1[1][0], seg2[0][0], seg2[1][0]]
# xpts = sorted(xpts)
# if (i[0] <= xpts[2] and i[0] >= xpts[1]:
# intersections.append((i, [seg1, seg2]))
seen.append((seg1, seg2))
later = time.time()
n2time = later-now
print "Line sweep results:"
now = time.time()
lsinters = intersection(S)
inters = []
for k, v in lsinters.iteritems():
#print '{0}: {1}'.format(k, v)
inters.append(k)
# inters.append(v)
later = time.time()
print 'TIME ELAPSED: {0}'.format(later-now)
print "N^2 comparison results:"
pts_seen = []
highestseen = 0
for i in intersections:
seen_already = False
seen = 0
for p in pts_seen:
if approx_equal(i[0][0], p[0], ev) and approx_equal(i[0][1], p[1], ev):
seen += 1
seen_already = True
if seen > highestseen:
highestseen = seen
if not seen_already:
pts_seen.append(i[0])
in_k = False
for k in inters:
if approx_equal(k[0], i[0][0], ev) and approx_equal(k[1], i[0][1], ev):
in_k = True
if in_k == False:
print 'Not in K: {0}: {1}'.format(i[0], i[1])
# print i
print highestseen
print 'TIME ELAPSED: {0}'.format(n2time)
#print 'Missing from line sweep but in N^2:'
#for i in seen:
# matched = False
print len(lsinters)
print len(pts_seen)
if len(lsinters) != len(pts_seen):
print 'uh oh!'