[Tutor] Hey guys!
Levi Adissi
leviadissi at gmail.com
Tue Feb 17 05:22:57 CET 2015
So I'm kind of stuck trying to program a function that returns a list of
tuples. The function takes 2 lists containing circles of which it should
compare list1[0] to list2[0] to see if they intersect. If they intersect or
touch then I should return them on a list of tuples(in the tuple would be
both intersecting circles).
I can't get circles_only to work the way I see it I'm comparing h to x only
if they're both in the same place on the list (hence my "h==x") I know it
doesn't work because the test returns None so I would really appreciate an
alternative method if you guys see one.
Here are my functions:
def circles_overlap(c1, c2):
x=(c2.center.y-c1.center.y)**2
y=(c2.center.x-c1.center.x)**2
distancemid=math.sqrt(x+y)
distancerad=(c1.radius+c2.radius)
if distancemid > distancerad:
return 1
elif distancemid < distancerad:
return -1
elif distancemid == distancerad:
return 0
def circles_only(lst1, lst2):
newlst=[]
for h in lst1:
for x in lst2:
if h==x:
if circles_overlap(lst1[h],lst2[x])== -1:
newlst.append(lst1[h],lst2[x])
elif circles_overlap(lst1[h],lst2[x])== 0:
newlst.append(lst1[h],lst2[x])
print newlst
TEST CASE:
def test_circles_olap1(self):
list1=[data_2.Circle(data_2.Point(2,3),
2),data_2.Circle(data_2.Point(2,3), 2), data_2.Circle(data_2.Point(2,3), 2)
]
list2=[data_2.Circle(data_2.Point(6,3),
2),data_2.Circle(data_2.Point(10,3), 2), data_2.Circle(data_2.Point(5,3), 2)
]
testor=functions_2.circles_only(list1,list2)
newlist=[(data_2.Circle(data_2.Point(2,3),
2),data_2.Circle(data_2.Point(6,3), 2)),(data_2.Circle(data_2.Point(2,3),
2),data_2.Circle(data_2.Point(10,3), 2))]
self.assertEqual(testor, newlist)
Thanks in advance!
More information about the Tutor
mailing list