> 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 > > 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 ??
-- http://mail.python.org/mailman/listinfo/python-list