def __init__(self, name, folder, longitudes, latitudes, initialCoordinate, velocity, game): ''' longitudes = columns latitudes = lines initialCoordinate = [longitude,latitude]''' self.name = name self.folder = folder self.longitudes = longitudes self.latitudes = latitudes self.coordinateSize = [ game.size[0] // game.longitudesImageOnScreen, game.size[1] // game.latitudesImageOnScreen ] self.scale = game.scaleRange / game.latitudesImageOnScreen self.coordinatesIndex = self.longitudes * self.latitudes ###- the variable below needs some work initialPosition = [initialCoordinate[0], initialCoordinate[1]] self.imagePath = game.imagePath + self.name + '.png' self.size = [ self.coordinateSize[0] * self.longitudes, self.coordinateSize[1] * self.latitudes ] self.cenarioImage = imageFunction.getImage(self.imagePath, self.size, game) self.rect = pg.Rect(0, 0, self.size[0], self.size[1]) self.cenarioImageSurface = imageFunction.newImageSurface( self.cenarioImage, self.size) self.coordinatesName = [] for coordinateIndex in range(self.coordinatesIndex): coordinatePosition = [ initialPosition[0] + int( np.ceil((coordinateIndex % self.longitudes) * self.coordinateSize[0])), initialPosition[1] + int( np.ceil((coordinateIndex % self.latitudes) * self.coordinateSize[1])) ] cenarioSubImage = self.cenarioImageSurface.subsurface( (coordinatePosition[0], coordinatePosition[1], self.coordinateSize[0], self.coordinateSize[1])) cenarioSubImageName = self.name + str(coordinateIndex) cenarioSubImagePath = game.imagePath + self.folder + Object.ObjectTypes.getType( Object.ObjectTypes.CENARIO ) + '/' + cenarioSubImageName + '.png' imageFunction.saveImage(cenarioSubImage, cenarioSubImagePath) ###- the line bellow actually creates these objects self.coordinatesName.append( Object.Object(cenarioSubImageName, self.folder, coordinatePosition, self.coordinateSize, self.scale, velocity, game, type=Object.ObjectTypes.CENARIO).name)
def __init__(self, name, folder, velocity, game): cenarioPosition = [0, 0] Object.Object(name, folder, cenarioPosition, game.size, game.scaleRange, velocity, game, type=Object.ObjectTypes.CENARIO)
def processSection(self, file, startwith, dt): logging.info("Working on section %s. Starting with '%s'." % (file, startwith)) orbiting = [] startfound = True if startwith != "": startwith = int(startwith) startfound = False src = memcache.get("src_%s" % file).replace("\r", "").split("\n") logging.debug("Resource %s fetched from cache." % file) for i in range(0, len(src), tleutil.linecount): if len(src[i: i + tleutil.linecount]) < 3: break noradid, name, body, timestamp = tleutil.parseTLE(src[i: i + tleutil.linecount]) if startwith == "" and startfound: startwith = noradid if startwith == noradid: startfound = True continue if not startfound: continue if Object.gql("where noradid = :1 and section = :2", noradid, file).count() == 0: obj = Object(noradid=noradid, name=name, section=file, orbiting=True) obj.put() logging.debug("New object %d (%s) discovered." % (noradid, name)) memcache.set(key="name_%d" % noradid, value=name, time=24*3600) if TLE.gql("where noradid = :1 and timestamp = :2", noradid, timestamp).count() == 0: tle = TLE(noradid=noradid, section=file, body=body, timestamp=timestamp) tle.put() logging.debug("Writing new TLE for object %d." % (noradid)) memcache.set(key="tle_%d" % noradid, value=body, time=24*3600) orbiting.append(noradid) if dt + timedelta(seconds = 10) < datetime.now(): for obj in Object.gql("where section = :1 and noradid < :2 and noradid > :3", file, noradid, startwith): if obj.noradid not in orbiting: obj.orbiting = False obj.put() logging.debug("Object %d (%s) has decayed." % (obj.noradid, obj.name)) logging.info("Section %s processor nearing expiration, returning at %d (%s)" % (file, noradid, name)) return str(noradid) for obj in Object.gql("where section = :1 and noradid > :2", file, startwith): if obj.noradid not in orbiting: obj.orbiting = False obj.put() logging.debug("Object %d (%s) has decayed." % (obj.noradid, obj.name)) logging.info("Section %s successfully processed." % file) return ""
def newObject(self, folder, game): if len(game.objects) < self.amountOfThings: if len(game.objects ) < self.amountOfThings * self.percentualBigThings / 100: objectProportion = self.objectBigProportion else: objectProportion = self.objectSmallProportion Object.Object(self.objectName + str(len(game.objects)), folder, [ game.size[0] * np.random.random_sample(), game.size[1] * np.random.random_sample() ], self.objectSize, objectProportion, self.objectVelocity, game, spaceCostSize=self.objectSpaceCostSize) else: self.populated = True print('PerformanceMeasurement is populated')
def __init__(self, game, folder, amountOfThings, percentualBigThings, objectSize, objectSpaceCostSize, objectBigProportion, objectSmallProportion, objectVelocity, mustPopulate=False): self.mustPopulate = mustPopulate self.populated = False self.amountOfThings = amountOfThings self.percentualBigThings = percentualBigThings self.objectName = 'performance_measurement_object' self.objectSize = objectSize self.objectSpaceCostSize = objectSpaceCostSize self.objectBigProportion = objectBigProportion self.objectSmallProportion = objectSmallProportion self.objectVelocity = objectVelocity bigObjectSize = self.objectSize.copy() bigObjectPosition = [200, 200] bigObjectScale = 100 bigObjectSpaceCostSize = self.objectSpaceCostSize.copy() # bigObjectSpaceCostSize = None if self.mustPopulate: Object.Object(self.objectName, folder, bigObjectPosition, bigObjectSize, bigObjectScale, 1.5, game, spaceCostSize=bigObjectSpaceCostSize) while not self.populated: self.populateTheScreen(folder, game)
if __name__ == '__main__': from utils.read_write import read_off_file from common import MODEL_DETAILS, Models, Coords, FileDetails, Face from model import Object # Select model to use model = Models.triangle model_details = MODEL_DETAILS[model] file_path = model_details[FileDetails.FILE_PATH] camera_pos = model_details[FileDetails.CAMERA_POS] light_source_pos = model_details[FileDetails.LIGHT_SOURCE_POS] camera_direction = [0, 0, -1] # Create model object obj = Object(*read_off_file(file_path).values()) # Get camera coordinates obj.get_camera_coords(camera_pos) # Get face normals obj.get_face_normals() # Get View frustum obj.get_view_frustum(camera_pos) # Get Normalized Coords obj.get_normalized_coords() # Backface Detection obj.backface_detection(camera_direction)
def insert_object(id_uri, object_uri, object_cost, object_meter, object_floor, object_pic): add = Object(id_uri, object_uri, object_cost, object_meter, object_floor, object_pic) session.add(add) session.commit()