I am new to python and still learning the ropes but I am hoping someone with more experience can help me out.
I am trying to write a python script that:
- creates four points
- creates four rectangles
- check if each of the point is in any of the rectangles then write out the results to a output file.
The problem involves two data structures Point and Rectangle class. I have already started to create the Point class and Rectangle classes. Rectangle class should hold relevant data sets created from random module’s random method. As you can tell from my attempts that I am kind of all over the place but I have used #comments to try to get what I am trying to do.
Specific questions I have are:
1) how can I get this script working?
2) What variables or functions am I missing to generate random rectangles and see if specific points are in those rectangles?
## 1. Declare the Point class class Point: def __init__(self,x = 0.0, y = 0.0): self.x = x self.y = y pass ## 2. Declare the Rectangle class class Rectangle: def __int__(self): ## A rectangle can be determined aby (minX, maxX) (minY, maxY) self.minX = self.minY = 0.0 self.maxX = self.maxY = 1.0 def contains(self, point): ## add code to check if a point is within a rectangle """Return true if a point is inside the rectangle.""" # Determine if a point is inside a given polygon or not # Polygon is a list of (x,y) pairs. This function # returns True or False. def point_in_poly(x,y,poly): n = len(poly) inside = False p1x,p1y = poly[0] for i in range(n+1): p2x,p2y = poly[i % n] if y > min(p1y,p2y): if y <= max(p1y,p2y): if x <= max(p1x,p2x): if p1y != p2y: xints = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x if p1x == p2x or x <= xints: inside = not inside p1x,p1y = p2x,p2y return inside ## 3. Generate four points ##define a Point list to keep four points points = [] ##add codes to generate four points and append to the points list polygon = [(0,10),(10,10),(10,0),(0,0)] point_x = 5 point_y = 5 ## 4. Generate four rectangles ##define a Rectangle list rects = [] for i in range(4): rectangle = Rectangle() ## Generate x x1 = random.random() x2 = random.random() ## make sure minX != maxX while(x1 == x2): x1 = random.random() if x1<x2: rectangle.minX=x1 rectangle.maxX=x2 elif x1>x2: rectangle.minX=x2 rectangle.maxX=x1 rects.append(rectangle) ## Develop codes to generate y values below ## make sure minY != maxY while(y1 == y2): y1 = random.random() if y1<y2: rectangle.minY=y1 rectangle.maxY=y2 elif y1>y2: recetangle.minY=y2 racetangle.maxY=y1 ## add to the list rects.append(rectangle) ## 5. Add code to check which point is in which rectangle resultList = [] ## And use a list to keep the results for i in range(4): for j in range(4): if points[i] in rectangle[j]: print i # write the results to file f=open('Code5_4_1_Results.txt','w') for result in resultList: f.write(result+'\n') f.close()