On 11/20/2012 09:26 AM, inshu chauhan wrote: >> def GenerateRing(x,y, N): Generates square rings around a point in data >>> which has 300 columns(x) and 3000 rows(y) >>> indices = [] >>> for i in xrange(-N, N): >>> indices.append((x+i, y-N)) >>> indices.append((x+N, y+i)) >>> indices.append((x-i, y+N)) >>> indices.append((x-N, y-i)) >>> return indices >>> >> Is it possible that N is greater than either x or y ? Are negative >> subscripts permissible? >> >> You should consider doing the clipping logic in this function, perhaps >> by passing xlimit and ylimit in as arguments.> >> > > > Yes N cannot be greater than x and y and it cant be negative too... > >> I need help in this part as I am unable to device a method in >> which if the >> points are out of index,it should stop and >> if idx[0] >= 300 and idx[1] >= 3000: go >> to next centre and start generating rings from there.. and again if the >> index is out of range .. this should repeat > > This is where you're trying to clip the values that may be outside of >> the total matrix. >> > > Yes I am trying to clip the values here but its not working actually , I > mean not at all working >
So did you read the following paragraphs? You should not be using "and" in that expression. >> >> You do not want "and" in that expression. The way you've coded it, >> it'll only skip items in which both indices are out of range. Change it to >> if idx[0] >= data.width or idx[1] >= data.height: >> >> and depending on your answer to my earlier query, you may want to also >> check if either subscript is negative. >> >>> continue >>> else : >>> point = data[idx[0], idx[1]] >>> if point == (0.0, 0.0, 0.0 ): >>> print point >>> continue >>> else: >>> dist = distance(centre, point) >>> print dist >>> if dist < radius : and >> rings >>> should be added only when this condition is satisfied >>> print point >>> points.append(point) >>> change = True >>> print change >>> >>> >>> break >> >> Why do you want to terminate the loop after only iteration? >> > > I dint get your question ?? > You have a break there. What's it for? It'll make sure you only process one of the idx values from new_indices. i doubt that's what you intended. -- DaveA -- http://mail.python.org/mailman/listinfo/python-list